辨析Empty,Null和Nothing
在VBA中變量一般都是強類型的,即總聲明成Integer,Long,Single,Double,String或Date等類型,這些強類型的值毋需考慮Empty、Null和Nothing。
有時我們需要定義一種能包含所有類型的變量,這種類型就是Variant,它是一種特殊的數據類型,可以包含數值、字符串或日期數據,還包含自定義類型、對象(Object)和特殊數值Empty、Nothing和Null。對所有變量,如果沒有明確聲明它們是其它數據類型,則它們都變成 Variant 數據類型。因此Empty和Null只有對Variant變量才有意義。
對於Empty、Nothing和Null,你都要知道,他們都是值,可以賦給Variant變量
作為聲明為Variant變量,如
Dim vnt as Variant
vnt只進行了聲明未賦值,其值就是Empty(由系統自動賦予),表示vnt只是聲明了但尚未初始化(即尚未通過程序賦值)。這是因為Variant可以是任何類型的值,但在初始化前無法確定實際的類型而不能給出符合類型的形式(如數值型的0或字符串型的"")。
對於賦予Empty的Variant型變量,Empty是個有效數據(可以稱為萬能值),因為如果你認為這是數值型則值是0,認為是字符串型則值是""(空串)。所以以下的比較將是為真的
If vnt = 0 Then 或 if vnt = "" Then 或 If IsEmpty(vnt) Then
上面所述的數值、字符串或Empty都是有效數據,而當你將Null賦予vnt,如
vnt = null
則表示vnt不包含有效數據。對於值為Null的數據只是通過IsNull函數來判斷。那什么時候要用Null呢?比如對於性別,有效數據只能是男或女,但沒填算什么,就是無效數據嘛!可以用Null來表示。
聲明為Variant變量有一種叫對象變量。Nothing就是為對象變量賦值的,如
Set vnt = Nothing
對象變量使用時總指向一個對象,對象需要占用較大的內存資源,用完應該盡快釋放。將對象變量設為Nothing就是通知系統對象變量不再使用那個對象,當那個對象沒有任何對象變量再使用它后,系統便會釋放該對象所占的內存資源。
總結
----
Empty、Null和Nothing都可為Variant變量賦值,聲明時系統會設Variant變量為Empty,如果要將Variant變量設為無效數據可用Null,如果不再使用對象變量就應盡快將之設成Nothing以利系統釋放資源。
