vba中没有控件数组的功能,只能用类模块了。
首先在窗体中粘贴以下代码
Dim col As New Collection
Private Sub UserForm_Initialize()
Dim I As Integer
Dim myc As cmds
For I = 1 To 12 '有多少个label就改成to 多少
Set myc = New cmds
Set myc.cmd = Me.Controls("Label" & I)
col.Add myc
Next
Set myc = Nothing
End Sub
然后在插入一个类模块,重命名为cmds,粘贴以下代码
Public WithEvents cmd As MSForms.Label
Private Sub cmd_Click()
msgbox cmd.name
End Sub
注意一点,label的名称不能改变,用默认的。
Private Sub Label1_Click()
MsgBox Label1.Name
End Sub
就这么简单,不是吗?
要用到类模块的知识,建议学习一下类模块。