繁体   English   中英

VBA将新对象分配给变量?

[英]VBA assigning new object to variable?

我正在尝试从VBA中的模块类创建新对象,并且有点困难。 两行分配代码,看起来相同,但结果不同。

在此处输入图片说明

我收到一条错误消息:

在此处输入图片说明

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

在此处输入图片说明

但是我不明白。 他们为什么有这种区别?

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

因此,最好在Set之前先Set Dim

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

Dim <variableName> As <dataType>

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

set aosh = new AOSHRatioQuery

您可以将变量更改为字符串。

aosh = "A pint of milk"

由于sendAsyncRequest方法期望将AOSHRatioQuery作为其第二个参数,并且VBA编译器知道它不能保证aosh变量实际上包含该类型的实例,因此违反了类型安全性并且引发了类型不匹配错误,以防止sendAsyncRequest接收垃圾它无法解释。

使用Dim aosh as new AOSHRatioQuery显式键入Dim aosh as new AOSHRatioQuery告诉编译器,保证aosh始终是AOSHRatioQuery实例或Nothing (尝试将其分配给其他类型将引发错误),因此可以安全地传递它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM