Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA und Null-Abfrage

VBA und Null-Abfrage
Melanie
Hallo zusammen!
Ich hab ein kleines Problem bei der Programmierung meiner Datenbank.
Ich möchte einen Wert in meiner Tabelle bew auf NULL abfragen, aber irgendwie erkennt das Modul dies nicht.
Es sieht folgendermaßen aus:
If bew!Austrittsdatum = Null Then
bew![urlaubsanspruch 2009] = 30
end if

in bew!Austrittsdatum steht definitiv nichts drin, also müsste er doch theoretisch in die if-Abfrage reinspringen - tut er aber nicht.
Muss ich spezielle Deklarationen verwenden, um NULL abzufragen?
Oder kann ich NULL umgehen und es irgendwie anders formulieren?
Bin mal wieder ein bisschen verzweifelt.
Kann mir jemand helfen?
Vielen Dank im Voraus und viele Grüße,
Melanie
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA und Null-Abfrage
27.07.2009 17:35:59
Hajo_Zi
Hallo Melanie,
=""

AW: VBA und Null-Abfrage
27.07.2009 17:48:46
Melanie
Hi zusammen,
Hi Hajo, das hab ich auch schon probiert... es funktioniert irgendwie nicht...
Passt auf, das Ganze sieht folgendermaßen aus:
If bew!Austrittsdatum = "" Then 'Austrittsdatum ist Null
If Day(bew![Probevertrag Start]) > 15 Then
bew![urlaubsanpruch 2009] = (12.5 - Month(bew![Probevertrag Start])) * bew![TZ-Vertrag] * 0.05
bew.Update
Else
bew![urlaubsanpruch 2009] = (13 - Month(bew![Probevertrag Start])) * bew![TZ-Vertrag] * 0.05
bew.Update
End If
Else 'wenn Austrittsdatum ungleich Null
If Month(bew!Austrittsdatum) - Month(bew![Probevertrag Start]) = 0 Then
bew![urlaubsanspruch 2009] = 0
bew.Update</i>
usw.
Wenn ich nun einen Datensatz habe, der im Feld Austrittsdatum keinen Wert enthält, dann springt er trotzdem ins erste ELSE - was mach ich denn nur falsch?
Viele Grüße,
Melanie
Anzeige
AW: VBA und Null-Abfrage
27.07.2009 17:49:21
effha
Hallo Melanie,
dafür gibt es die Funktion isnull()
z.B. if isnull(bew!Austrittsdatum ) then
...
end if
Das sieht sehr nach ACCESS aus...
27.07.2009 17:47:42
NoNet
Hallo Melanie,
der Part [urlaubsanspruch 2009] sieht aber sehr nach MS ACCESS und nicht nach Excel aus !
Ich habe es eben ausprobiert : Auch unter Excel 2007 sind keine Leerzeichen in Bereichsnamen möglich !!
Falls Access : Probiere mal diese Syntax : If IsNull(bew!Austrittsdatum) Then
Gruß, NoNet
Anzeige
AW: Das sieht sehr nach ACCESS aus...
27.07.2009 17:50:56
Melanie
Hi NoNet,
ja, aber ich dachte Visual Basic ist auf Excel und Access gleichermaßen anwendbar - bitte verzeiht einem Newbe auf diesem Gebiet....
*schäm*
Viele Grüße,
Melanie
Denken ist manchmal Glücksache...
27.07.2009 17:59:14
NoNet
Sorry Melanie,
aber "denken" und "wissen" unterscheidet sich manchmal doch erheblich (zumindest bei mir sehr oft ;-).
Daher solltest Du solche relevanten Infos NIE verschweigen, sondern IMMER mit angeben !
Zumal man in einem reinen EXCEL-Forum nicht ohne weiteres erahnen kann, dass nun eine Frage zu einer komplett anderen Applikation gestellt wird.
Excel VBA und Access VBA haben zwar die gleiche Stammsyntax und Grundbefehle, aber die Klassen, Objekte, Methoden, Eigenschaften etc. unterscheiden sich absolut und sind fast nie 1:1 übertragbar.
Alleine die Formulare aus MS ACCESS sind nicht zu vergleichen mit den UserForms aus Excel !!
Hat denn die Funktion IsNull() weitergeholfen ?
Gruß, NoNet
Anzeige
AW: Denken ist manchmal Glücksache...
27.07.2009 18:01:01
Melanie
Hi NoNet,
ja, vielen Dank!
Damit hat es geklappt....
Jetzt kann ich mich hier nie mehr blicken lassen ... *schäm*
Doch doch, Du darfst schon wiederkommen...
27.07.2009 18:04:46
NoNet
...und bei der nächsten ACCESS-Fragestellung zeigen, dass Du etwas dazu gelernt hast ;-)
Gruß, NoNet
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

VBA Null-Abfrage: So funktioniert's


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine NULL-Abfrage durchzuführen, kannst du die Funktion IsNull() verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne deinen VBA-Editor: Drücke Alt + F11, um den VBA-Editor zu starten.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf ein bestehendes Projekt, wähle Einfügen und dann Modul.

  3. Schreibe die Abfrage: Verwende die folgende Syntax, um zu prüfen, ob ein Wert NULL ist:

    If IsNull(bew!Austrittsdatum) Then
        bew![urlaubsanspruch 2009] = 30
    End If
  4. Teste den Code: Führe den Code aus, um zu sehen, ob die Abfrage wie gewünscht funktioniert.


Häufige Fehler und Lösungen

Ein häufiger Fehler bei der NULL-Abfrage ist die Verwendung des falschen Operators. Hier sind einige Probleme und deren Lösungen:

  • Problem: Die Abfrage funktioniert nicht, wenn NULL-Werte überprüft werden.

    • Lösung: Stelle sicher, dass du IsNull() verwendest, anstatt den Vergleich mit = Null zu machen. Der Ausdruck If bew!Austrittsdatum = Null wird immer als falsch ausgewertet.
  • Problem: In Excel wird ein leeres Feld nicht als NULL erkannt.

    • Lösung: Verwende If bew!Austrittsdatum = "" Then, um leere Felder zu überprüfen, aber kombiniere dies mit IsNull() für eine umfassendere Prüfung.

Alternative Methoden

Falls du in Access arbeitest, kannst du die Funktion Nz() verwenden, um NULL-Werte zu behandeln. Hier ist ein Beispiel für den Einsatz in Access VBA:

Dim urlaubsanspruch As Variant
urlaubsanspruch = Nz(bew![urlaubsanspruch 2009], 0)

Diese Methode gibt 0 zurück, wenn der Wert NULL ist. In Excel kannst du auch If IsEmpty() benutzen, um leere Zellen zu überprüfen, was eine nützliche Alternative ist.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von NULL-Abfragen in Excel VBA:

  1. Überprüfung auf NULL und leere Werte:

    If IsNull(bew!Austrittsdatum) Or bew!Austrittsdatum = "" Then
        ' Führe Code aus, wenn der Wert NULL oder leer ist
    End If
  2. Anwenden einer Standardwertzuweisung:

    If IsNull(bew!Austrittsdatum) Then
        bew![urlaubsanspruch 2009] = 30
    Else
        bew![urlaubsanspruch 2009] = bew![urlaubsanspruch 2009] + 10
    End If

Tipps für Profis

  • Vermeide die Verwendung von = Null: Dies führt oft zu unerwarteten Ergebnissen, da VBA nicht so funktioniert, wie man es erwarten würde.
  • Nutze Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was helfen kann, Fehler zu vermeiden.
  • Verwende Kommentare: Erkläre komplexe Abfragen mit Kommentaren, um die Lesbarkeit deines Codes zu verbessern.

FAQ: Häufige Fragen

1. Wie prüfe ich, ob ein Wert in VBA NULL ist? Verwende die Funktion IsNull(), um zu überprüfen, ob ein Wert NULL ist. Beispiel:

If IsNull(bew!Austrittsdatum) Then
    ' Wert ist NULL
End If

2. Was passiert, wenn ich = Null verwende? Die Verwendung von = Null führt immer zu einem FALSE-Ergebnis. Stattdessen solltest du IsNull() verwenden, um die richtige Überprüfung durchzuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige