2010-07-25 3 views
35

ho un oggetto e al suo interno ho assegno voglio se alcune proprietà è impostato su false, come:VBA Controllare se la variabile è vuota

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

Ma in qualche modo, a volte objresult.EOF è Empty, e come posso controllare ?

  • IsEmpty funzione è per celle di Excel solo
  • objresult.EOF Is Nothing - tornare Empty
  • objresult.EOF <> null - ritorno Empty, come pure!
+4

Si prega di fornire po 'di codice vero e proprio - ci mostrano che tipo di oggetto è 'objresult'. E 'IsEmpty' non è specifico per le celle excel, è per le variabili' Variant'. –

risposta

70

Come test dipende DataType della struttura:

 
| 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 | 

si può dire al tipo di dati premendo F2 per lanciare il Visualizzatore oggetti e guardando l'oggetto. Un altro modo sarebbe quello di utilizzare solo la funzione TypeName: MsgBox TypeName(obj.Property)

15

Per verificare se un Variant è NULL, è necessario fare le cose come:

Isnull(myvar) = True 

o

Not Isnull(myvar) 
10

Per un certo numero, è difficile perché se una cella numerica è empty, VBA assegna ad essa un valore predefinito di 0, quindi è difficile per il tuo codice VBA indicare la differenza tra uno zero inserito e una cella numerica vuota.

Il seguente controllo ha funzionato per me, per vedere se v'è stato un vero e proprio 0 inserite nella cella:

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

Il codice di esempio è una soluzione eccellente per distinguere 0 e Vuoto – Laurent