访问vba包装类处理事件
我正在尝试编写一个用于获取事件的包装器类。这是一个不工作(编辑:不显示消息框)的简单示例:错误在哪里访问vba包装类处理事件,vba,ms-access,Vba,Ms Access,我正在尝试编写一个用于获取事件的包装器类。这是一个不工作(编辑:不显示消息框)的简单示例:错误在哪里 ' CLASSE1 Private WithEvents frm As Access.Form Private Const Evented As String = "[Event Procedure]" Public Sub Init(pFrm As Access.Form) Set frm = pFrm frm.OnLoad = Evented End Su
' CLASSE1
Private WithEvents frm As Access.Form
Private Const Evented As String = "[Event Procedure]"
Public Sub Init(pFrm As Access.Form)
Set frm = pFrm
frm.OnLoad = Evented
End Sub
Private Sub frm_Load()
MsgBox "OK!" 'NOT SHOW
End Sub
'Form1
Private SL As Classe1
Private Sub Form_Load()
Set SL = New Classe1
SL.Init Me
End Sub
你把表格的内容弄混了。这项工作: Class1:
选项比较数据库
选项显式
Private WithEvents frm作为访问权限。表单
Private Const Evented As String=“[Event Procedure]”
公共子初始化(pFrm作为Access.Form)
设置frm=pFrm
frm.OnCurrent=事件
端接头
公共子终止()
设置frm=无
端接头
专用子frm_电流()
MsgBox“OK”
端接头
表格1:
选项比较数据库
选项显式
私人FormCollection作为集合
专用子表单_加载()
将程序设置为Class1
Set EventProcedure=New Class1
Set FormCollection=新集合
EventProcedure.Initialize Me.Form
FormCollection.AddEventProcedure,Me.Name
Set EventProcedure=Nothing
端接头
私有子表单_卸载(取消为整数)
'卸载所有颜色值文本框的事件。
将程序设置为Class1
对于FormCollection中的每个EventProcedure
事件过程。终止
下一个
Set EventProcedure=Nothing
Set FormCollection=Nothing
端接头
我已经尝试过了,但它不起作用。不需要设置Init@科斯塔克。注释有原因也有更正。我从我的一个示例中删去了代码:。这避免了整个问题,即,您正在为current
添加一个事件,而不是为load
,问题是类是在加载时初始化的,所以现在已经太晚了,无法挂接到load
事件。单击“确定”消息未显示窗体的Load()
事件已引发。尝试其他事件进行测试。我正在尝试编写代码。我将CLASSE1代码放在通用模块中,并立即在Private上显示编译错误,其中events frm作为Access.Form
。这必须在表单模块中。若我将所有代码放在表单后面,那个么Private SL作为Classe1
会出错,因为它不在标题中。如果我将其移动到header,则会出现错误“用户定义类型未定义”。@June7我有一个类模块“Classe1”和一个Fom模块