【问题标题】:VBA assigning new object to variable?VBA将新对象分配给变量?
【发布时间】:2012-07-21 07:45:11
【问题描述】:

我正在尝试从 VBA 中的模块类创建新对象,但我遇到了一点困难。两行赋值代码,看起来一样,但结果不同。

我收到一条错误消息:

之后,我改用(1)而不是(2),错误已修复。

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

【问题讨论】:

    标签: vba object variable-assignment


    【解决方案1】:

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

    因此,在Set 之前始终使用Dim 是一个好习惯。

    【讨论】:

      【解决方案2】:

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

      set aosh = new AOSHRatioQuery

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

      aosh = "A pint of milk"

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

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

      【讨论】:

        【解决方案3】:

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

        Dim <variableName> As <dataType>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-13
          • 2012-06-17
          • 2021-01-01
          相关资源
          最近更新 更多