天天看點

關于Null、Empty、vbNullString、Nothing差别

這篇部落格根據網友那裡擷取來的,不是本人親寫親測。

Null:Null是一個象Integer或者String一樣的變量類型,它表示一個沒有合法資料的變量。

       這有别于zero、Nothing、Empty或者vbNullString。許多數值與Null結合在一起,都将産生Null結果。

       比如:    表達式 結果 Null - Null Null Null + 7 7 Null = Null Null   

       你可以使用IsNull語句來判斷表達式是否為Null:   

        If IsNull(my_variable) Then ...   

Empty:這也是一個象Integer或者String一樣的變量類型,它表示了一個還沒有進行初始化的變量。它與Null的意義不同,

       Null表示沒有合法資料。    一個沒有初始化的變量的數值是Empty。你可以使用IsEmpty語句來判斷是否變量進行了初始化:

           If IsEmpty(my_variant) Then ...    

Nothing:這是一個指向空對象的對象引用。将對象引用設定為Nothing,就釋放了那個對象。如果沒有其他的引用指向對象,

      Visual Basic就将銷毀這個對象。    Dim obj As Form1    :    Set obj = Nothing

       注釋: Free the object reference.    使用Is Nothing語句來判斷是否一個引用為Nothing:   

       If obj Is Nothing Then ...    vbNullString:這是個常量,表示一個empty字元串。它與空白字元串""不同,

       表示什麼也沒有的字元串(nothing string)。對于許多場合,它被當作一個empty字元串""處理,

       真正使用它的目的是傳遞null參數給庫函數。    Null是一個很奇怪的數值,它不是zero,不是Nothing,不是vbNullString。

       它是沒有定義的東西。    判斷字元串是否為空白    有以下幾種方法判斷一個字元串是否為空白:

       Dim txt As String

       Dim blank As String blank = "" : If Len(txt) = 0 Then ...

       If txt = vbNullString Then ... If txt = "" Then ... If txt = blank Then ...   

       經過測試,Len(txt)=0的方法要比其他方法快20%多。

Nothing在VBA中的用途

我們常在VBA代碼中看到Nothing這個單詞,如:

    Set d = Nothing

    If d is Nothing

 Nothing到底是什麼意思呢?幫助裡是這樣解釋的:

使用 Nothing 關鍵字被将對象變量從實際對象中分離開來。要使用 Set 語句将 Nothing 指派給對象變量。

通俗一點就是判斷某個對象是否存在(is Nothing)和從記憶體資源中釋放這個對象(= Nothing)

例如我們在EP上找一個會員, 我們就可以這樣寫

Dim aa as Ep會員   '假設定Ep會員是一個對象類型

Set aa="小A"     '用Set 設定對象變量為會員"小A"

If  aa Is Nothing Then     '如aa不存在

   Msgbox "這個會員不存在"

Else

     Msgbox "這個會員存在"

End If

-----------------------------------------------------------------------------------------------------------------

而且Set 對象變量=Nothing   則是把從非Excel庫提庫的外來引用對象從記憶體資源中釋放出去.如

Dim d As New Dictionary   '建立一個新的字典對象

Set d = Nothing                '從記憶體資源中釋放出來