Excel vba formel falsch,Was?
Sub test()
Worksheets("Tabelle1").Range("A1") = worksheetfunction.iif(or(isempty(Range(A1)),isempty(Range(B2)),""(Range(A1-B2+1))
End Sub
4 Antworten
Suboptimierer hat natürlich recht, es macht Sinn, das auseinander zu "klamüsern".
Aber ich habe mal versucht möglichst nah an Deinem Entwurf zu bleiben um die Fehler erkennbar zu machen.
Vor allem ist IIF keine Worksheetfunction und akzeptiert offensichtlich auch kein OR.
Ich denke SO sollte es klappen, wie von Dir beabsichtigt:
Sub test()
Worksheets("Tabelle1").Range("A1") = IIf((IsEmpty(Range("A1")) + IsEmpty(Range("B2"))) <> 0, "xxx", (Range("A1") - Range("B2") + 1))
End Sub
Oder?
iif(isempty(Range("A1")) or isempty(Range("B2")),"",Range("A1")-Range("B2")+1)
Sub test()
Worksheets("Tabelle1").Range("A1") = worksheetfunction.iif(or(isempty(Range(A1)),isempty(Range(B2)),""(Range(A1-B2+1))
End Sub
Meine Empfehlung: Zieh den Code auseinander. Alles in einer Zeile ist sehr unübersichtlich.
Sub test()
If [a1] = "" Or [b2] = "" Then
[a1] = ""
Else
[a1] = [a1] - [b2] + 1
End If
End Sub
Ich habe mir einmal genauer deinen Code angeschaut. Willst du es unbedingt so lösen, gibt es einiges zu korrigieren:
- Manche Zellebezüge fanden ohne Range statt
- Manche Zellbezüge wurden nicht mit "" geklammert
- Or als Worksheetfunction benötigt das Objekt vorweg
- Bei IIf darf nicht Worksheetfunction stehen
- Links vom Gleichheitszeichen referenzierst du mit Worksheets("Tabelle1"), rechts nicht.
- Du hattest Klammern nicht richtig gesetzt
- Hinter "" fehlte ein Komma
Mein Code:
Sub test2()
Range("A1") = _
IIf(WorksheetFunction.Or(IsEmpty(Range("A1")), IsEmpty(Range("B2"))), "", Range("A1") - Range("B2") + 1)
End Sub