通过选择一个OptionButton,我希望活动表单上的所有复选框都取消选中并取消选中。
我可以使用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
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
或者:
可能在UserForm上发生更改事件,该事件指出如果CheckBox为Enabled = False,则Value = False。
这样,我不必在每个OptionButton上都放入For Each循环。我尝试了UserForm_Change Sub和UserForm_Click,但似乎没有任何效果。
您永远不会分配任何东西chb
(而且我不确定您是否需要使用该变量)。您可以这样做:
For Each ctrl In Me.frm9301_Equipment.Controls
ctrl.Enabled = False
ctrl.Value = False
Next ctrl
Run Code Online (Sandbox Code Playgroud)
仅当所有控件均为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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9647 次 |
最近记录: |