有一个用户表单有很多文本框,我需要检测每个文本框的更改。因此,我为表单中的每个文本框编写了一个子例程,结果是一大段代码。
由于每个文本框的代码都是相同的,我想优化它。那么是否可以只编写一个子例程来检测表单的任何文本框中的更改?
实现这一目标的唯一方法是使用一个类WithEvents
这是一个最小的例子:
名为的类模块的代码mytextbox
:
Private WithEvents txtbox As MSForms.TextBox
Public Property Set TextBox(ByVal t As MSForms.TextBox)
Set txtbox = t
End Property
Private Sub txtbox_Change()
' code for handling the event
End Sub
以及用户窗体内的代码,假设您要处理每个文本框的事件
Private myEventHandlers As Collection
Private Sub UserForm_Initialize()
Dim txtbox As mytextbox
Set myEventHandlers = New Collection
Dim c As Control
For Each c In Me.Controls
If TypeName(c) = "TextBox" Then
Set txtbox = New mytextbox
Set txtbox.TextBox = c
myEventHandlers.Add txtbox
End If
Next c
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)