必需变量不能用括号分配给此表达式



我正在开发带有VBA的宏,由于某种原因,我需要在调用功能时将括号添加到我的变量中。我这样做是为了使我的代码与Mac上的VBA和C 库的数据交换。

我有一个复制错误的代码样本。

    Private Type S0
        x As Double
    End Type
    Private Type S1
        s_0 As S0
    End Type
    Private Type S2
        s_1() As S1
    End Type
    Private Sub RunMe()
        Dim l As S2
        ReDim l.s_1(1 To 2)
        'no error
        Call Display(l.s_1(1).s_0)
        'compilation error : variable required can't assign to this expression
        Call Display((l.s_1(1).s_0))
    End Sub
    Private Sub Display(d As S0)
        MsgBox d.x
    End Sub

如您所见,用附加括号调用我的功能显示是不合逻辑的,但我不知道为什么,对于基本情况,这是这样的工作。

如果我仅使用基本类型,则可以工作。我认为这与用户定义类型有关。

所以,我有两个问题:

  • 当我在示例中添加括号时,vba的计算是什么?
  • 我该怎么做才能避免汇编错误并保持相同的计算?

非常感谢您阅读我并帮助我!

VBA中的默认变量传递方法是 ByRef。但是"即使一个叫做的过程已将其参数宣布为BYREF,您也可以通过将每个参数封闭在括号中。"请参阅http://www.cpearson.com/excel/byrefbyval.aspx。

因此,您的Call Display((l.s_1(1).s_0))尝试将(l.s_1(1).s_0)作为用户定义的类型S0 ByVal尝试传递。

但是用户定义的类型可能不会传递。那就是为什么错误。

最新更新