在用户表单中,我正在编码一个复选框以选择多个其他复选框(月份)。这是为了使用户能够选择所有12个月,而不是点击每个月。以下是我写的代码。我现在做错了什么?
Private Sub Selectbox_AfterUpdate()
Dim x As Integer
If Me.Selectbox.Value = True Then
For x = 0 To 12
Me.Controls("Month" & x).Value = True
Next x
Me.Selectbox.Caption = "Deselect All"
ElseIf Me.Selectbox.Value = False Then
For x = 0 To 12
Me.Controls("Month" & x).Value = False
Next x
Me.Selectbox.Caption = "Select All"
End If
End Sub
答案 0 :(得分:1)
有12个月。改变
For x = 0 To 12
到
For x = 1 To 12
这取决于您使用的名称。
答案 1 :(得分:1)
不要检查True或False,检查vbChecked或vbUnchecked。循环中还有1次迭代次数过多。你的代码看起来像这样:
Private Sub Selectbox_AfterUpdate()
Dim x As Integer
If Me.Selectbox.Value = vbChecked Then
For x = 1 To 12
Me.Controls("Month" & x).Value = vbChecked
Next x
Me.Selectbox.Caption = "Deselect All"
ElseIf Me.Selectbox.Value = vbUnchecked Then
For x = 1 To 12
Me.Controls("Month" & x).Value = vbUnchecked
Next x
Me.Selectbox.Caption = "Select All"
End If
End Sub