提问人:Millik 提问时间:6/25/2014 最后编辑:Millik 更新时间:11/17/2023 访问量:11397
VBA:检测用户窗体的任何文本框中的更改
VBA: Detect changes in any textbox of the userform
问:
有一个用户窗体有许多文本框,我需要检测每个文本框的更改。因此,我为表单中的每个文本框编写了一个子例程,结果却是一大段代码。 由于每个文本框的代码都是相同的,因此我想对其进行优化。那么,是否可以只编写一个子例程来检测表单任何文本框中的更改?
答:
4赞
z̫͋
6/25/2014
#1
实现此目的的唯一方法是将类与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
下一个:MySQL查看现有事件脚本
评论