通过选择OptionButton,我希望活动表单上的所有CheckBox都取消选择AND UNCHECK。
我可以使用For Each循环取消选择,但这不能用于取消选中框。我收到错误:
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,但似乎没有任何效果。
答案 0 :(得分: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