2017-09-26 81 views
2

我试图触发按钮,该按钮将处理所选文档的提取,一旦用户双击表单中列出的文档,如下面的屏幕截图当用户双击文档时触发一个按钮private sub

ScreenShot

所以我的属性去和配置:

Private Sub ParamName_DblClick(Cancel As Integer) 
call Forms!FormName.Extract_Click 
End Sub 

没有成功,我也试过:

Private Sub ParamName_DblClick(Cancel As Integer) 
    Forms!FormName.Extract_Click 
    End Sub 

形式里面,子的声明如下:

Private Sub Extract_Click() 
    Dim dbs As DAO.Database 
    //.... //do work 
end sub 

我做错了吗?

+0

这是一张纸和一个窗体,或只是一个窗体? –

回答

2

简答:你不能,即使你可以(或者在你可以的情况下),你也不应该。

较长的答案:不要直接在事件处理程序中实现任何逻辑。 调用从处理程序的逻辑:

Private Sub SomeControl_SomeEvent() 
    DoTheThing 
End Sub 
Public Sub DoTheThing() 
    'do stuff 
End Sub 

Public构件可以生活标准模块中,因此可以通过任何东西的任何地方调用 - 某种形式从一个按钮,或从另一个在另一个窗体上的按钮,或者你需要从其中调用它的任何东西。

但是不要自己调用事件处理程序过程。事件处理程序处理事件,它们由VBA运行时调用:保持这种状态并保持繁荣。

+0

非常好,我已经声明了一个名为Public Function ExtractFile()的函数,然后我可以在任何使用调用窗体(“MyFormName”)的地方调用它。ExtractFile – user3752718

+0

'Function'通常返回一个值,显式的'Call'语法已经过时在过去的25年中有更好的一部分,但是这就是主意。 –

+0

你是否建议我使用'procedure'而不是'Function'并且删除'Call'语法? PS:我是初学者,我想知道专家的反馈 – user3752718

相关问题