vba - 访问 vba 包装类处理事件
问题描述
我正在尝试编写一个用于获取事件的包装类。这是一个不起作用(编辑:不显示消息框)简单示例:错误在哪里?
' 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
解决方案
您混淆了表单加载。这有效:
第一类:
Option Compare Database
Option Explicit
Private WithEvents frm As Access.Form
Private Const Evented As String = "[Event Procedure]"
Public Sub Initialize(pFrm As Access.Form)
Set frm = pFrm
frm.OnCurrent = Evented
End Sub
Public Sub Terminate()
Set frm = Nothing
End Sub
Private Sub frm_Current()
MsgBox "OK"
End Sub
表格1:
Option Compare Database
Option Explicit
Private FormCollection As Collection
Private Sub Form_Load()
Dim EventProcedure As Class1
Set EventProcedure = New Class1
Set FormCollection = New Collection
EventProcedure.Initialize Me.Form
FormCollection.Add EventProcedure, Me.Name
Set EventProcedure = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Unload events for all colour value textboxes.
Dim EventProcedure As Class1
For Each EventProcedure In FormCollection
EventProcedure.Terminate
Next
Set EventProcedure = Nothing
Set FormCollection = Nothing
End Sub
推荐阅读
- html - 之后的html在浏览器中运行时出现在 textarea 中。仅在 Firefox 上发生
- python - 选择不在名称列表中的列名
- react-native - 世博会图标显示为问号 (?)
- python - 修复条形图matplotlib的标注功能
- python - 使用 Python 从基于 Topic 的文本中提取关键短语
- python - 带有 Anaconda 的 VSCode 在终端中的运行中找到模块,但在运行代码或调试器中找不到
- javascript - 我如何在javascript中开始一个新行
- ios - 如何使用 UIDocumentInteractionController 将视频文件保存到 iOS 文件应用程序
- java - JScrollPane 中的 JPanel 不会动态调整大小
- angular - 角度将日期时间设置为本地时间