“dim a”和“dim a,b”之间的区别

时间:2015-07-27 17:41:54

标签: vba

VBA的奇怪行为:

这在第3行中给出了错误94“非法使用Null”:

Function test1()
  Dim a As String
  a = Null
  test1 = a
End Function

但是......这完美无缺:

Function test1()
  Dim a, b As String
  a = Null
  test1 = a
End Function

唯一不同的是第2行中的变量b,它从未使用过! WTF正在这里?

1 个答案:

答案 0 :(得分:6)

在第二个代码示例中......

Dim a, b As String

As String仅适用于最后一个变量 b 。变量 a 是Variant类型。

Variant变量可以接受Null。 String变量不能。

在第一个代码示例中, a 显式声明为String。这就是为什么它不会接受Null。

如果您希望 a b 都是String类型,则必须明确声明每个类型...

Dim a As String, b As String