Visual Basic - 如何强制事件触发

twp*_*wpc 1 vba event-handling

我是VB的新手(实际上是使用VBA),我想强迫事件发生.具体来说,我正在更新文本框中的值,我想调用该文本框的AfterUpdate()事件.

Private Sub cmdCreateInvoice_Click()
  Me.txtInvDate = '11/01/10'
  Me.txtInvDate.AfterUpdate
End Sub
Run Code Online (Sandbox Code Playgroud)

在运行时,我收到一条错误,上面写着"编译错误:无效使用属性".如果我尝试类似的东西,但使用click事件(例如:cmdCreateInvoice.Click),它没有共享名称的属性,我收到一条错误,上面写着"编译错误:找不到方法或数据成员".
我知道必须有办法从另一个事件中解雇一个事件.但是正确的语法是什么?谢谢!

Rol*_*ble 10

AFAIK,无法在VB(A)中"手动触发事件".你可以做的是手动调用事件处理程序,为此,rdkleine已经给你答案了:

Call txtInvDate_AfterUpdate()
Run Code Online (Sandbox Code Playgroud)

这将有完全一样的效果,如果事件发射了(尽管它不会给你事件的整个链条也可以与它一起开火-除非你Call自己的处理程序以及).

IgorM有另一个有效点,在他的回答评论中 - 编写一个不同的 Sub来完成你想要完成的工作是"更干净" ,然后从事件处理程序和你现在尝试做的任何地方调用它(按钮)点击?).所以:

Private Sub txtInvDate_AfterUpdate()
    DoWhatever
End Sub

Private Sub button_Click()
    DoWhatever
End Sub

Private Sub DoWhatever
    'your desired effect
End Sub
Run Code Online (Sandbox Code Playgroud)

你甚至可以DoWhatever在模块中创建一个Public Sub.

编辑

不,在VB(A)中,定义Sub(或Function)例程的顺序无关紧要.