2012-06-20 63 views
4

任何人都可以向我解释为什么在MS-Access 2007中的窗体上的按钮的VBA代码中,这会给出错误“编译错误:类型不匹配:数组或预期的用户定义类型“将数组传递给函数/子程序时,MS Access/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 

的功能/子程序我写不返回任何东西,但我不能得到它来编译,除非我在我的函数调用的返回值分配给一个虚拟变量,就像在酒吧功能以上。

回答

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 
+0

看来我需要更多一点阅读了关于调用子程序的方式。谢谢。 – serme