【问题标题】:VBA Strange syntax [duplicate]VBA奇怪的语法[重复]
【发布时间】:2015-06-05 02:30:15
【问题描述】:

请看下面的 VBE 告诉它,尽管.Add 是一个 Sub,但它希望在第 3 行有一个“=”,我不明白为什么?

1  Sub Set_Params(key As String, value As Variant)
2      Dim Tranasitions as Collection
3      Transitions.Add (value, key)
4  End Sub

【问题讨论】:

  • Add 后面有一个空格。
  • 我只是在没有那个空格的情况下测试了它,:(同样的结果

标签: vba syntax


【解决方案1】:

这是因为您的代码不知道Tranasitions 是什么,所以您在声明中有错字(Dim 行)。

所以要修复它,修复声明:

Dim Transitions as Collection

然后从调用中删除(),你不要在VBA中将它们与subs一起使用(除非你把Call放在前面):

Transitions.Add value, key

【讨论】:

    【解决方案2】:

    去掉括号。

    Sub Set_Params(key As String, value As Variant)
        Dim Transitions as New Collection
        Transitions.Add value, key
    End Sub
    

    此外,您必须实际创建一个新的 Transitions 实例。 哦,您在声明时将Transitions 拼写为Tranasitions。打开Option Explicit,这样就不会再发生这种情况了。

    【讨论】:

      【解决方案3】:

      首先,使用一致的名称引用集合。

      然后,使用Call Transitions.Add 等或去掉括号。

      Vba 有这种神秘的调用语法。

      【讨论】:

      • 减一?我在这里是对的。多年来一直这样做
      • Call 是该语言古老版本中的一个过时关键字。
      • 其实不是。行为是非常微妙的不同。谷歌一下。
      • 我了解@Bathsheba 的区别。
      • 人们仍然在 VBA 中使用 Call,我认为它不值得一票。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2018-08-08
      • 2013-07-16
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多