2010-07-25 22 views
35

Ich habe ein Objekt, und in ihm Ich möchte überprüfen, ob einige Eigenschaften auf false gesetzt ist, wie:VBA prüfen, ob die Variable ist leer

If (not objresult.EOF) Then 
    'Some code 
End if 

Aber irgendwie manchmal objresult.EOF ist Empty, und wie kann ich es überprüfen ?

  • IsEmpty Funktion ist für Zellen Excel nur
  • objresult.EOF Is Nothing - Rückkehr Empty auch - Empty
  • objresult.EOF <> null zurückkehren!
+4

Bitte geben Sie einige echte Code - uns zeigen, welche Art von Objekt ist 'objresult'. Und 'IsEmpty' ist nicht spezifisch für Excel-Zellen, sondern für' Variant'-Variablen. –

Antwort

70

Wie Sie Tests hängt von der Datentyp der Immobilie:

 
| Type         | Test       | Test2 
| Numeric (Long, Integer, Double etc.) | If obj.Property = 0 Then  | 
| Boolen (True/False)     | If Not obj.Property Then  | If obj.Property = False Then 
| Object        | If obj.Property Is Nothing Then | 
| String        | If obj.Property = "" Then  | If LenB(obj.Property) = 0 Then 
| Variant        | If obj.Property = Empty Then | 

Sie den Datentyp durch Drücken der Taste F2 kann sagen, das Objekt, um das Objekt-Browser und suchen bis zu starten. Eine andere Möglichkeit wäre, nur die Type-Name-Funktion: MsgBox TypeName(obj.Property)

15

Um zu überprüfen, ob ein Variant ist Null, müssen Sie es tun:

Isnull(myvar) = True 

oder

Not Isnull(myvar) 
10

Für eine Reihe, es ist schwierig, denn wenn eine numerische Zelle empty ist, wird VBA ihm einen Standardwert von 0 zuweisen, daher ist es für Ihren VBA-Code schwierig, den Unterschied zwischen einer eingegebenen Null und einer leeren numerischen Zelle zu erkennen.

Die folgende Check für mich gearbeitet, um zu sehen, ob es eine tatsächliche 0 in die Zelle eingegeben wurde:

If CStr(rng.value) = "0" then 
    'your code here' 
End If 
+0

Ihr Codebeispiel ist eine große Problemumgehung für die Unterscheidung von 0 und Empty – Laurent

Verwandte Themen