Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问vba包装类处理事件_Vba_Ms Access - Fatal编程技术网

访问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模块