辨析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