辨析VBA中的Empty,Null和Nothing


辨析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以利系統釋放資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM