"dim a"和"dim a,b"之间的区别

Pet*_*ter 2 vba

VBA的奇怪行为:

这会在第3行中出现错误94"非法使用Null":

Function test1()
  Dim a As String
  a = Null
  test1 = a
End Function
Run Code Online (Sandbox Code Playgroud)

但是......这很完美:

Function test1()
  Dim a, b As String
  a = Null
  test1 = a
End Function
Run Code Online (Sandbox Code Playgroud)

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

Han*_*sUp 6

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

Dim a, b As String
Run Code Online (Sandbox Code Playgroud)

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

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

在第一个代码示例中,a显式声明为String.这就是它不接受Null的原因.

如果您希望ab都是String类型,则必须为每个类型显式声明类型...

Dim a As String, b As String
Run Code Online (Sandbox Code Playgroud)