Vba Microsoft Access:如何为事件过程选择名称?

Vba Microsoft Access:如何为事件过程选择名称?,vba,ms-access,event-handling,Vba,Ms Access,Event Handling,是否可以在Microsoft Access中(在设计期间)为VBA事件过程选择名称,而不使用系统自动分配的名称?例如,表单中插入前事件的处理程序的“自动”名称为form_beforeensert;我想选别的。字段值(由用户函数返回)的类似问题可以通过在给定字段的属性表中指定=myFuncName(param_list)来解决,但这种方法不适用于事件过程。事件过程的情况看起来更难,因为这样的过程可以接受一些参数,这些参数的值随后由系统使用:例如,在插入之前处理程序需要参数取消,并且系统可以拒绝在c

是否可以在Microsoft Access中(在设计期间)为VBA事件过程选择名称,而不使用系统自动分配的名称?例如,表单中插入前事件
的处理程序的“自动”名称为
form_beforeensert
;我想选别的。字段值(由用户函数返回)的类似问题可以通过在给定字段的属性表中指定
=myFuncName(param_list)
来解决,但这种方法不适用于事件过程。事件过程的情况看起来更难,因为这样的过程可以接受一些参数,这些参数的值随后由系统使用:例如,在插入之前
处理程序需要参数
取消
,并且系统可以拒绝在candler中将其设置为
true
(或1)时插入


提前谢谢你的建议

不,你真的不能。要使用事件过程,必须遵守源接口的定义。否则,VBA不会知道在引发事件时要运行的是一个事件过程

考虑的一个选择是将工作委托给自己的程序:

Private子表单\u插入前(取消为整数)
取消
端接头
私有子域(取消为整数)
“做我的事
端接头

不,你真的不能。要使用事件过程,必须遵守源接口的定义。否则,VBA不会知道在引发事件时要运行的是一个事件过程

考虑的一个选择是将工作委托给自己的程序:

Private子表单\u插入前(取消为整数)
取消
端接头
私有子域(取消为整数)
“做我的事
端接头

非常感谢您的回答,我也认为这是不可能的。但是,可以动态设置事件处理程序(在VBA中),只需将带有处理程序名称的字符串设置为处理程序(例如,设置为
MyForm.onbeforeist
)属性!事实上,这些并不是真正的“事件”。例如,它不会在任何参数之间传递,尤其是
Cancel
参数。在这种情况下,必须使用
DoCmd.CancelEvent
,但这对我来说太松散了,因为我们无法控制要取消的事件(因为可能会有其他事件触发的事件)。如果在表单上为控件指定名称(而不是text15),然后,至少事件存根与添加了“事件”部分的控件具有相同的名称。所以,你在这里有一些控制。这,非常感谢你的回答,我也认为这是不可能的。但是,可以动态设置事件处理程序(在VBA中),只需将带有处理程序名称的字符串设置为处理程序(例如,设置为
MyForm.onbeforeist
)属性!事实上,这些并不是真正的“事件”。例如,它不会在任何参数之间传递,尤其是
Cancel
参数。在这种情况下,必须使用
DoCmd.CancelEvent
,但这对我来说太松散了,因为我们无法控制要取消的事件(因为可能会有其他事件触发的事件)。如果在表单上为控件指定名称(而不是text15),然后,至少事件存根与添加了“事件”部分的控件具有相同的名称。所以,你在这里有一些控制权。