如何在UserForm上循环CheckBoxes?

问题描述 投票:2回答:1

通过选择OptionButton,我希望活动表单上的所有CheckBox都取消选择AND UNCHECK。

我可以使用For Each Loop取消选择它,但这不能用于取消选中框。我收到错误:

chB.Value =对象变量或未设置块变量

Private Sub optB_9201_Click()

Dim ctrl As Control
Dim chB As CheckBox

If Me.optB_9201.Value = True _
  And Me.optB_9251.Value = False _
  And Me.optB_9301.Value = False Then

    Me.img9301_main.Visible = True
    Me.frM9301_View.Caption = "Du har valgt CLX-9201NA med følgende konfigurasjon:"
    Me.frm9301_Equipment.Enabled = True

    For Each ctrl In Me.frm9301_Equipment.Controls
        ctrl.Enabled = False
        chB.Value = False
    Next ctrl

    Me.frM9301_Stand.Enabled = True

    For Each ctrl In Me.frM9301_Stand.Controls
        ctrl.Enabled = True
    Next ctrl

End If

End Sub

如何解决这个问题?

或者:

是否可以在UserForm上有一个更改事件,指出如果CheckBox为Enabled = False则Value = False。

这样我就不必在每个OptionButton上放入For Each循环。我尝试了UserForm_Change Sub和UserForm_Click,但似乎没有任何工作。

excel vba
1个回答
5
投票

你永远不会给chb分配任何东西(我不确定你根本不需要使用那个变量)。你可以这样做:

For Each ctrl In Me.frm9301_Equipment.Controls
    ctrl.Enabled = False
    ctrl.Value = False
Next ctrl

这仅在所有控件都是CheckBoxes时才有效。如果不是这样,那么只需添加一些if / then逻辑:

For Each ctrl In Me.frm9301_Equipment.Controls
    If TypeName(ctrl) = "CheckBox" Then
        ctrl.Enabled = False
        ctrl.Value = False
    End If
Next ctrl
© www.soinside.com 2019 - 2024. All rights reserved.