2009-03-31 7 views
5

Mit einigen VBA-Code in Access arbeiten, die, wenn eine sehr spezifische Reihe von Bedingungen erfüllt sind, es eine InputBox öffnet, die nach einer Ganzzahl fragt. So weit, ist es gut.VBA Not IsNull

Private Sub Command10_Click() 

    If Not IsNull(mrf) Then 
     If min <> max Then 
      If qty <= min Then 
       mrf = GetParamValue 
      End If 
     End If 
    End If 
    End Sub 

Das Problem ist, dass die Not IsNull ignoriert wird. Ich möchte, dass ein Wert eingegeben wird, wenn kein Wert bereits vorhanden ist. Dies hält das Feuern von der InputBox fort, solange die Bedingungen <> max und qty < = min erfüllt sind. Was fehlt mir hier?

+0

Ahh sieht aus wie mein Problem Comin ist g von irgendwo anders. – Terry

Antwort

11

Wenn mrf Variant ist, dann ist es zunächst Empty, nicht Null. Sie daher IsEmpty() Funktion verwenden.

+1

Super, das hat es behoben! +1 morgen, wenn ich mehr Stimmen habe – Terry

+1

Eine andere Möglichkeit wäre, mrf auf null zu initialisieren. Ich habe bemerkt, dass er keine seiner Variablen (min, max, mrf) deklariert, was im Allgemeinen eine schlechte Idee ist. Aktivieren Sie "Option Explicit" und Sie werden viele logische Fehler wie diese vermeiden. – JohnFx

4

Nein, die Not IsNull funktioniert perfekt.

Erinnern Sie sich, IsNull ist eine Funktion, die TRUE zurückgibt, wenn der Parameter, der an es übergeben wird, Null ist und andernfalls falsch.

Ihr "If Not IsNull (MRF) Then" übersetzt in Englisch Aussage "Wenn mrf nicht null ist, dann"

, was das bedeutet, wenn mrf einen Wert hat, dann sind Sie den Code der Verarbeitung innerhalb der wenn Aussage. Wenn Sie möchten, dass der innere Code ausgelöst wird, wenn mrf NULL ist, müssen Sie die NOT aus der Anweisung entfernen.

+0

LOL Ich hatte einen Moment. Vielen Dank. – Terry

1

Meine Vermutung ist, dass MRF nicht null ist, auch wenn es leer ist oder etwas anderes. Es könnte auch nichts sein, was anders ist als null in VBA Land (glaube ich). Versuchen Sie, den Code im Debugger auszuführen und den Wert von mrf zu betrachten. Abhängig davon, was MRF ist, können Sie einen anderen Test (wie check len (mrf) oder nicht isNothing (mrf) oder wenn es eine ganze Zahl ist, und es init zu Null, dann mrf <> 0 .... Sie bekommen die Idee Hoffnung., das hilft!

+0

+1 morgen auch, danke! – Terry