如何用类模块使vba窗体中的同类型控件共用一段事件代码?

在用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个标签控件同时响应一个事件了,就可以单击任意一个标签控件,就可以弹出这个标签的名称了。

       

发表评论