2011-04-12 139 views
13

如何在VBA中定義空字符串,日期或整數?VBA中變量的空值

當數據不完整或不相關時,我需要能夠爲某些記錄的某些字段分配一個Null值,但如果我將變量聲明爲String,Date或Integer,則在嘗試指定Null時會出錯值。

是使用Variant的唯一解決方案嗎?如果是這樣,那麼VBA中所有其他數據類型的意義何在?

回答

27
Dim x As Variant 
x = Null 

只有Variant數據類型可以保存價值Null

Variant是,它可以包含任何類型的數據的一種特殊數據類型[...]變體還可以包含特殊值空,錯誤,沒什麼,和

的所有其他數據類型的「點」,正是他們不能包含任何醇」類型的數據。這有兩個好處,我可以想到:

  • 程序員更難將錯誤的數據分配給變量,因爲這會在編譯時檢測到。這可以幫助您防止錯誤併爲您和將要維護您的代碼的下一個人更清楚地說明問題。
  • 狹窄的數據類型節省存儲空間。將整數放入一個Variant(16個字節)比將它們放入一個Int(2個字節)佔用更多的內存。如果你有大數組,這將變得很重要。

當然,變種也有自己的位置,因爲本網站上的其他線程都在討論。

+0

我一直在爲VBA編程一段漫長的時間,但當我讀到Variant可以採用三種不同的特殊值時,它仍然讓我感到不安:所有的聲音都完全一樣:Empty,Nothing和Null。 – 2011-04-12 07:16:51

+0

也許這是我的SQL和PHP經驗 - 但我不認爲Null是'任何舊數據',並且它對於大多數SQL數據類型是一個有效的值......哦,那就是變體。 – HorusKol 2011-04-12 07:17:13

+2

我聽說在Office 2013中,'Variant'也會使用'Void','Absent','Unspecified','None'和'Vacuum'的值。 – 2011-04-12 07:24:50