VBA将新对象分配给变量?

时间:2012-07-23 04:01:14

标签: vba object variable-assignment

我正在尝试从VBA中的模块类创建新对象,我有一个小难题。两行分配代码,看起来一样,但结果不同。

enter image description here

我收到一条错误消息:

enter image description here

之后,我切换到使用(1)而不是(2),错误被修复。

enter image description here

但我不明白; 他们为什么会有这种差异?

3 个答案:

答案 0 :(得分:4)

Dim声明一个变量,Set实例化它。

因此,在Dim之前始终拥有Set是一种很好的做法。

答案 1 :(得分:3)

在VBA中,您必须使用Dim关键字声明变量,然后使用As关键字定义其数据类型。这就是它的语法是如何工作的。作为一般形式:

Dim <variableName> As <dataType>

答案 2 :(得分:3)

如果您不使用Dim声明变量的特定类型,则可以随后将变量更改为其他类型,例如;之后;

set aosh = new AOSHRatioQuery

您可以将变量变为字符串;

aosh = "A pint of milk"

由于sendAsyncRequest方法需要AOSHRatioQuery作为其第二个参数&amp; VBA编译器知道它不能保证aosh变量实际上包含该类型的实例,类型安全性被违反&amp;引发类型不匹配错误,以防止sendAsyncRequest收到无法解释的垃圾。

使用Dim aosh as new AOSHRatioQuery显式输入告诉编译器aosh始终为AOSHRatioQuery实例或Nothing(尝试将其分配给其他类型会引发错误)所以它可以安全通过。