
在用vba 窗体的过程中,有时候会遇到需要设计N个同类型的控件,如下图所示

用户窗体上有10个Label控件,每次单击Label控件都要执行一个相似的代码。
除了每个Label控件都写一个代码以外,还可以使用类模块设计使其共享一段代码。
步骤如下:
1.插入一个类模块,重命名为”clsForm”
2.在类模块中插入如下代码:
Public WithEvents oLabel As MSForms.Label
Private Sub oLabel_Click()
'要执行的代码
MsgBox oLabel.Caption
End Sub
3.插入一个标准模块,输入如下的代码:
Public cls1() As New clsForm
4.在用户窗体的启动事件中输入如下的代码:
Private Sub UserForm_Initialize()
For i = 1 To 10
sName = "Label" & i
ReDim Preserve cls1(i - 1)
Set cls1(i - 1).oLabel = UserForm1.Controls(sName)
Next i
End Sub
经过以上4个步骤,就使得10个标签控件同时响应一个事件了,就可以单击任意一个标签控件,就可以弹出这个标签的名称了。



发表评论