[英]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.