2011-04-12 89 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