Vba 复选框以选择不同的月份

Vba 复选框以选择不同的月份,vba,excel,Vba,Excel,在一个userform中,我编写了一个复选框来选择多个其他复选框(月)。这是为了使用户能够选择所有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.Ca

在一个userform中,我编写了一个复选框来选择多个其他复选框(月)。这是为了使用户能够选择所有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

有12个月。改变

For x = 0 To 12


这取决于您使用的名称。

有12个月。改变

For x = 0 To 12


这取决于您使用的名称。

不要检查正确或错误,请检查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

不要检查正确或错误,检查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

不要检查对错,检查vbChecked或vbUnchecked。我试过了。它给了我一个运行时错误,建议“找不到指定的对象”…不要检查True或False,检查vbChecked或vbUnchecked。我试过了。它给了我一个运行时错误,建议“找不到指定的对象”…您可以使用1个循环完成所有操作
Me.Controls(“月”&x).Value=Me.Selectbox.Value
您是正确的。我只是保留了OP的原始格式。哦,我明白了。您需要
Me.Selectbox.Caption=IIf(Me.Selectbox.Value,“全部选择”,“全部取消选择”)
。我想你的方式也一样好。干杯感谢所有的评论。帮了大忙。真不敢相信这是0比1那么简单。你可以用1个循环来完成这一切
Me.Controls(“月”&x).Value=Me.Selectbox.Value
您是正确的。我只是保留了OP的原始格式。哦,我明白了。您需要
Me.Selectbox.Caption=IIf(Me.Selectbox.Value,“全部选择”,“全部取消选择”)
。我想你的方式也一样好。干杯感谢所有的评论。帮了大忙。真不敢相信这是0比1那么简单。