【问题标题】:MS Access/VBA type mismatch when passing arrays to function/subroutine将数组传递给函数/子例程时 MS Access/VBA 类型不匹配
【发布时间】:2012-06-21 04:05:16
【问题描述】:

谁能向我解释一下,为什么在 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 函数一样。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    如果你想在参数周围使用括号,你必须使用调用,所以跳过括号:

    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
    

    【讨论】:

    • 看来我需要多读一点关于调用子例程的方法。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多