Welchen Sinn hat die Funktion IsNull()? (VBA Programmierung Excel)

...komplette Frage anzeigen

2 Antworten

Eine wirklich sinnvolle Anwendung von IsNull ist mir auch noch nicht eingefallen, aber Du kannst eine Variable auf Null setzen, mit dem Effekt, dass ein Ausdruck, in dem die Variable vorkommt auch Null ist.
In diesem Code wird das in der Zelle A2 deutlich, denke ich:

Sub test()
    Dim a
    Dim b
    Dim c

    a = Null
    MsgBox IsNull(a)
    b = 5
    c = 10
    ActiveSheet.Range("A1").Value = b + c
    ActiveSheet.Range("A2").Value = a + b + c
End Sub

seit wann gibts denn diese VBA-Fkt? sie wird mir in xl2010 nicht akzeptiert, ich kann sie also nicht testen,
Ausserdem ist es ein übles Sprachkauderwelsch, hätte ggf IsZero() erwartet.

0
@Iamiam

Das Code Beispiel habe ich so aus Excel 2010 kopiert.
Wieso das bei Dir nicht läuft, kann ich mir nicht erklären.
Und das "Null" steht hier nicht für das deutsche "Null".
Das könnte man mit =0 oder ggf. mit IsEmpty abfragen.
Hier wird es einigermaßen übersichtlich erklärt:
http://www.baldyweb.com/NullEmptyEtc.htm
Zitat:"Perhaps the best way to think about Null is as meaning "Unknown"."
Bei meinem Code oben, wenn er denn, wie bei mir, läuft, bleibt übrigens die Zelle A2 als Ergebnis der Summe a+b+c leer, eben weil jeder Ausdruck, der Null enthält auch Null bleibt.
So wird auch

    ActiveSheet.Range("A3").Value = b / a   

ausgeführt, mit einer leeren Zelle A3 als Ergennis, während

    ActiveSheet.Range("A3").Value = b / 0   

mit der Fehlermeldung "Divisiion durch Null" abgebrochen wird.

0
@Oubyi

Danke für die Erklärung!
Beim Makroaufruf erhalte ich die Meldung:
falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft, und isnull(a) bleibt klein geschrieben! (???)

0
@Iamiam

@lamiam: Da bin ich jetzt auch irritiert.
Ich hatte gerade die Idee, dass Du vielleicht ein Add-In nicht installiert hast, aber auch wenn ich bei mir das Analyse-Funktionen-VBA-Add-in deaktiviere, läuft das Makro.
IsNull wird auch in der Auswahl angezeigt, wenn ich z.B. nur isn eingebe und dann STRG&Leertaste drücke.
Und natürlich wird aus isnull dann auch automatisch IsNull und bei isnull( wird der Assi für das Argument angezeigt.
Auch bei den Verweisen, die ich in VBA aktiviert habe, konnte ich nichts besonderes finden,.
Kurz: Ich bin ratlos!

0

@1lagerregal1:
Danke fürs ☆

0
@Oubyi

@Oubyi: danke für die Mühe!
Ich muss mal bei meiner Bezugsquelle nachhaken, ich hab da einen Verdacht...
Es geht nämlich auch in einer anderen Datei ein µ nicht, da wird schon Chr(10) und left() reklamiert. In einer weiteren Datei läuft das aber!

1
@Iamiam

noch was:
mit Strg+Leer (danke für den Tipp, hatte das lang wieder vergessen!) nach isn wird mir IsNull() sogar angezeigt und eingefügt (sofort wieder als isnull, also klein), auch nach isnull( kommt die Nachfrage, aber wenn ich es dann wieder richtig einfüge, bleibt es trotzdem klein und funktioniert nicht!.
Bevor ich aber reklamiere, muss ich es wohl erst nochmal neu installieren! (da mag ich aber noch nicht ran wegen meiner schon recht umfangreichen bendef Einstellungen)

1

Was möchtest Du wissen?