我正在尝试从 VBA 中的模块类创建新对象,但我遇到了一点困难。两行赋值代码,看起来一样,但结果不同。
我收到一条错误消息:
之后,我改用(1)而不是(2),错误得到修复。
但我不明白;为什么他们会有这种差异?
我正在尝试从 VBA 中的模块类创建新对象,但我遇到了一点困难。两行赋值代码,看起来一样,但结果不同。
我收到一条错误消息:
之后,我改用(1)而不是(2),错误得到修复。
但我不明白;为什么他们会有这种差异?
Dim
声明一个变量,Set
实例化它。
因此,始终拥有Dim
before是一个好习惯Set
。
在 VBA 中,您必须使用 Dim 关键字声明变量,然后使用 As 关键字定义它们的数据类型。这就是它的语法的工作原理。作为一般形式:
Dim <variableName> As <dataType>
如果您不使用Dim
来声明变量的特定类型,您可以随后将变量更改为另一种类型,例如之后;
set aosh = new AOSHRatioQuery
您可以将变量更改为字符串;
aosh = "A pint of milk"
由于该sendAsyncRequest
方法期望 aAOSHRatioQuery
作为其第二个参数并且 VBA 编译器知道它不能保证该aosh
变量实际上将包含该类型的实例,因此违反了类型安全性并引发了类型不匹配错误以防止sendAsyncRequest
接收它无法解释的垃圾。
显式键入 withDim aosh as new AOSHRatioQuery
告诉编译器aosh
确保始终是AOSHRatioQuery
实例或Nothing
(尝试将其分配给另一种类型将引发错误),因此可以安全地传递它。