Excel Vba Typen Unverträglich?

4 Antworten

Es macht keinen Sinn eine Schleife laufen zu lassen, aber die Variable nicht zu nutzen. Und Du kannst in IIF keine Range angeben.
Nicht böse sein, aber wenn Du Dich mit VBA gar nicht auskennst, solltest Du doch erstmal die Grundlagern lernen, bevor Du versuchst so etwas umzusetzen.

Was Du - so wie ich es verstehe - zu erreichen versuchst, sollte so funktionieren:

Sub test()
Dim Bereich As Range
Dim Zelle As Range

Set Bereich = Worksheets("Tabelle1").Range("C1:C10")

For Each Zelle In Bereich
   Zelle = IIf((IsEmpty(Zelle.Offset(0, -2)) + IsEmpty(Zelle.Offset(0, -1))) <> 0, "Not Calculable", (Zelle.Offset(0, -2)) - (Zelle.Offset(0, -1)) + 1)
Next Zelle

End Sub

Ich weiß aber nicht ob Dir das wirklich hilft, wenn Du nicht nachvollziehen kannst, wie es funktioniert.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Du willst doch sicher für jede einzelne Zelle in beiden Bereichen wissen, ob sie leer sind, du fragst aber VBA, ob der gesamte Bereich leer ist. (was mit isempty gar nicht geht, das wertet nur Einzelzellen aus). VBA ist zwar sehr mächtig, aber auch sehr empfindlich gegen falsche Formulierungen (Syntax). Mach es so, wie ich es in der AW zu deiner vorhergehenden Frage beschrieben habe, dann sollte es gehen!

Du versucht, Bereiche auf ungewohntem Weg zu verrechnen. Das müsste eine Matrixfunktion sein, aber ich glaube nicht, dass IsEmpty und die Subtraktion bei dir den gewünschten Effekt erzielen.

Du solltest statt IsEmpty mit ZÄHLENWENN die leeren Zellen prüfen und Mit SUMME die Differenz zweier Spalten berechnen.

Willst du zeilenweise IsEmpty prüfen, solltest du eine Schleife um deinen Befehl bauen.

Worksheets("Tabelle1").Range("C1:C10") = IIf((IsEmpty(Range("A1:A10")) +

würde ich mir mal anschauen