Excel Vba Typen Unverträglich?
Sub test()
For i = 1 To 10
Worksheets("Tabelle1").Range("C1:C10") = IIf((IsEmpty(Range("A1:A10")) + IsEmpty(Range("B1:B10"))) <> 0, "Not Calculable", (Range("A1:A10") - Range("B1:B10") + 1))
Next
End Sub
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.
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 rührst dich zwar nicht mehr, aber falls ein anderer mit dieser Frage konfrontiert ist, hier der Link dazu:
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