无法在VBA中将表单传递给模块

时间:2013-10-10 17:59:52

标签: ms-access access-vba ms-access-2010

我在Access 2010中的表单上有一个单击事件,如下所示:

Private Sub SaveRecord_Click()
     checkDataIntegrity(Me)
End Sub

checkDataIntegrity的定义如下:

Function checkDataIntegrity(ByVal fForm As form) As Boolean

这很好用,花花公子。但是,我有另一个点击事件:

Private Sub LFS_Flashed_Successfully_Fail_Click()
     preventSimultaneousPassAndFail (Me)
End Sub

preventSimultaneousPassAndFail的定义如下:

Function preventSimultaneousPassAndFail(ByVal fForm As form) As Boolean

当我调用此click事件时,我收到以下错误:

Run-time error '13':
Type mismatch

我在这里做错了什么?两个事件调用都以相同的形式调用,并在同一模块中调用函数。

2 个答案:

答案 0 :(得分:0)

您似乎没有对函数的返回值执行任何操作,因此请勿将参数括在括号中。

'preventSimultaneousPassAndFail (Me)
preventSimultaneousPassAndFail Me

这是标准的VBA练习。不幸的是,我无法解释为什么它在一个案例中引发了错误,而在另一个案例中却没有。所以这个问题可能无法解决问题,但我仍然建议你做出改变来排除它。

虽然我们不知道有关这些功能的任何细节,但我建议您考虑传递表单对象ByRef而不是ByVal

答案 1 :(得分:0)

您收到错误的原因是

preventSimultaneousPassAndFail (Me)

括号表达式尝试调用对象的默认成员。在Access.Form的情况下,这是Name属性,其类型为String。这就是类型不匹配错误的原因。

如果是

preventSimultaneousPassAndFail Me

对表单本身的引用传递给方法。

相关问题