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

3

VBA的奇怪行为:

以下代码中的第三行会出现错误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

唯一的区别在于第二行中的变量b从未被使用!这是怎么回事?
1个回答

6

In the second code sample ...

Dim a, b As String

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

Variant 类型的变量可以接受 Null 值。String 类型不能。

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

如果你希望 ab 都是 String 类型,你必须显式地为每个变量声明类型...

Dim a As String, b As String

1
谢谢。对于新手来说,这对VBA程序员来说非常令人困扰。因此,我认为正确的语法应该是: Dim a as String, b as String (如果您不想使用null) - Peter
是的,我已经将那个注释添加到答案中了。 - HansUp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接