VBA Controllare se la variabile è vuota

Ho un oggetto e voglio verificare se alcune proprietà è impostata su false, come:

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 ritorno Empty
  • objresult.EOF <> null ritorno Empty così!
  • Si prega di fornire il codice reale ci mostra che tipo di oggetto è objresult. E IsEmpty non è specifico per celle di excel, è per Variant variabili.
InformationsquelleAutor fessguid | 2010-07-25



4 Replies
  1. 83

    Come test dipende dalla Struttura del Tipo:

    | Tipo | Test | Test2 
    | Numerico (Lungo, Integer, Double, etc.) | Se obj.Property = 0, Allora | 
    | Boolen (True/False) | Se Non obj.Proprietà | Se obj.Property = False Then 
    | Oggetto | Se obj.La Struttura È Nulla Di Poi | 
    | | Stringa di Se obj.Property = "" Then | Se LenB(obj.Di Proprietà) = 0 Quindi 
    | Variante | Se obj.Property = Empty | 
    

    Si può dire che il Tipo di dati premendo il tasto F2 per avviare il visualizzatore Oggetti e cercando l’Oggetto. Un altro modo sarebbe quello di utilizzare solo la funzione TypeName:MsgBox TypeName(obj.Property)

  2. 11

    Per un numero, non è complicato, perché se numerico delle cellule è empty VBA assegnare un valore di default è 0, e quindi è difficile per il codice VBA per capire la differenza tra un’entrata zero e un vuoto numerico delle cellule.

    La seguente check-ha lavorato per me per vedere se c’era un reale 0 immesso nella cella:

    If CStr(rng.value) = "0" then
        'your code here'
    End If
    • Il codice di esempio è un’ottima soluzione per distinguere tra 0 e Vuoto
  3. 0

    Ho avuto un problema simile con un numero intero che può essere legittimamente ricevuto 0 in Access VBA. Nessuna di queste soluzioni ha funzionato per me.

    In un primo momento ho solo usato un booleano var e SE l’istruzione:

    Dim i as integer, bol as boolean
       If bol = false then
          i = ValueIWantToAssign
          bol = True
       End If

    Nel mio caso, la mia intero assegnazione di variabile era all’interno di un ciclo for e un altro SE la dichiarazione, così ho finito per usare “Uscita” invece, come è stato più conciso.

    In questo modo:

    Dim i as integer
    ForLoopStart
       If ConditionIsMet Then
          i = ValueIWantToAssign
       Exit For
       End If
    ForLoopEnd

Lascia un commento