我在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
我在这里做错了什么?两个事件调用都以相同的形式调用,并在同一模块中调用函数。
答案 0 :(得分:0)
您似乎没有对函数的返回值执行任何操作,因此请勿将参数括在括号中。
'preventSimultaneousPassAndFail (Me)
preventSimultaneousPassAndFail Me
这是标准的VBA练习。不幸的是,我无法解释为什么它在一个案例中引发了错误,而在另一个案例中却没有。所以这个问题可能无法解决问题,但我仍然建议你做出改变来排除它。
虽然我们不知道有关这些功能的任何细节,但我建议您考虑传递表单对象ByRef
而不是ByVal
。
答案 1 :(得分:0)
您收到错误的原因是
preventSimultaneousPassAndFail (Me)
括号表达式尝试调用对象的默认成员。在Access.Form的情况下,这是Name属性,其类型为String。这就是类型不匹配错误的原因。
如果是
preventSimultaneousPassAndFail Me
对表单本身的引用传递给方法。