将数组传递给函数/子例程时,MS Access / VBA类型不匹配

时间:2012-06-20 20:03:08

标签: ms-access vba

有人可以向我解释为什么,在MS-Access 2007中的表单上的按钮的VBA代码中,这会给出错误“编译错误:类型不匹配:数组或用户定义的类型预期”

Private Sub Button_Click()
    Dim Arr() As Integer
    Foo (Arr())
End Sub

Private Sub Foo(Arr() As Integer)
    Me.Field.Value = "Foo"
End Sub

但是编译得很好?

Private Sub Button_Click()
    Dim Dummy
    Dim Arr() As Integer
    Dummy = Bar (Arr())
End Sub

Private Function Bar(Arr() As Integer)
    Me.Field.Value = "Bar"
End Function

我正在编写的函数/子例程没有返回任何内容,但除非我将函数调用的返回值赋给虚拟变量,否则我无法进行编译,就像上面的Bar函数一样。

1 个答案:

答案 0 :(得分:5)

如果您希望在参数周围使用括号,则必须使用“呼叫”,因此请跳过括号:

Private Sub Button_Click()
    Dim Arr() As Integer
    ''No brackets
    Foo Arr()
    ''Or 
    ''Call Foo(Arr())
End Sub

Private Sub Foo(Arr() As Integer)
    Me.Field.Value = "Foo"
End Sub