我动态定义了复选框,这些复选框在运行时添加到用户窗体中。
Sub Userform_Initialize()
For i = 1 To 4
Set Chk = Frame4.Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
With Chk
.top = 84 + k
.left = 336
.Width = 100
.Height = 18
.Caption = "Add item"
.Visible = True
End With
k = k + 24
Next i
End Sub
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
MsgBox Chk
End Sub
由于某种原因,该事件没有回应。有没有人知道为什么?我需要复选框的布尔值。这意味着当用户点击动态复选框时,我会在msgbox中看到“True”。
答案 0 :(得分:1)
将类模块添加到项目中,根据需要命名(比如说" ChkBox"),并将此代码放入其中:
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
MsgBox Chk.Value
End Sub
在您的用户格式代码中,添加此
Dim myChks(1 To 4) As New ChkBox '<--| this must be at the very top of your userform code pane
Sub Userform_Initialize()
Dim i As Long, k As Long
With Me.Frame4.Controls
For i = 1 To 4
With .Add("Forms.Checkbox.1", "Checkbox" & i)
.Top = 84 + k
.Left = 336
.Width = 100
.Height = 18
.Caption = "Add item"
.Visible = True
Set myChks(i).Chk = .Parent.Item(.Name)
End With
k = k + 24
Next i
End With
End Sub