2011-04-12 4 views
13

Come faccio a definire una stringa Null, data o numero intero in VBA?valori Null per le variabili in VBA

Devo essere in grado di assegnare un valore Null ad alcuni campi per determinati record quando i dati sono incompleti o irrilevanti, ma se dichiaro una variabile come String, Date o Integer, ottengo errori quando provo ad assegnare un Null valore.

è l'unica soluzione per utilizzare Variante? Se è così, allora qual è il punto di tutti gli altri tipi di dati in VBA?

risposta

27
Dim x As Variant 
x = Null 

Solo il tipo di dati Variant può contenere il valore Null.

Una variante è un tipo di dati speciale che può contenere qualsiasi tipo di dati [...] Una variante può contenere anche i valori speciali Vuoto, errore, niente, e Null.

Il "punto" di tutti gli altri tipi di dati è proprio che essi non possono contenere qualsiasi ol' tipo di dati. Questo ha due vantaggi che posso pensare:

  • È più difficile per il programmatore assegnare i dati di un tipo non intenzionale alla variabile per errore, poiché questo verrà rilevato in fase di compilazione. Questo può aiutare a prevenire bug e rendere le cose più chiare per te e per la prossima persona che manterrà il tuo codice.
  • I tipi di dati ridotti risparmiano spazio di archiviazione. Mettere interi in un Variant (16 byte) occupa molto più memoria che metterli in un Int (2 byte). Questo diventa significativo se si dispone di grandi matrici.

Naturalmente, le Varianti hanno il loro posto, come discutono altri thread su questo sito.

+0

Sono stato di programmazione VBA per un tempo loonnng lungo, ma mi sconvolge ancora ogni volta che leggo che una variante può assumere tre diversi valori speciali che tutti i suoni esattamente lo stesso: Vuoto, Niente e Null. –

+0

Forse è la mia esperienza di SQL e PHP - ma non ritengo di essere Null 'qualsiasi vecchio di dati', ed è un valore valido per la maggior parte dei tipi di dati SQL ... vabbè, varianti è allora. – HorusKol

+2

Ho sentito che in Office 2013, 'Variant' assumerà anche i valori di' Void', 'Absent',' Unspecified', 'None' e' Vacuum'. –