选择特定选项按钮时,选项按钮显示为灰色

时间:2020-02-02 03:30:33

标签: excel vba

今天早上我问了一个类似的问题,我得到了一个很好的答案,但是后来我又往前推了一点,这就是我被困住的地方。

这是我的第一篇文章:Unselect an entire optionbutton group if another optionbutton outside the group is selected

但是现在,我想要这个:

如果OptionButton1.Value = TrueOptionButton2.Value = True,则将OptionButton4变灰为OptionButton11(也给它起了一个组名:“类别”)。

但是,如果OptionButton3.Value = True,则将OptionButton4变为OptionButton11(组类别)。

编辑:

我做了一些事情并且奏效了,但是一旦我运行用户表单并生成一个数字(出于用户表单目的),optionbutton就会变灰。这是我使用的代码:

Private Sub OptionButton1_Click()
    OptionButton4.Enabled = False
    OptionButton5.Enabled = False
    OptionButton6.Enabled = False
    OptionButton7.Enabled = False
    OptionButton8.Enabled = False
    OptionButton9.Enabled = False
    OptionButton10.Enabled = False
    OptionButton11.Enabled = False
End Sub

Private Sub OptionButton2_Click()   
    OptionButton4.Enabled = False
    OptionButton5.Enabled = False
    OptionButton6.Enabled = False
    OptionButton7.Enabled = False
    OptionButton8.Enabled = False
    OptionButton9.Enabled = False
    OptionButton10.Enabled = False
    OptionButton11.Enabled = False
End Sub

编辑2:

我目前的解决方案是添加

Unload Me
UserForm1.Show

因此它重置了我的用户窗体并删除了灰色的选项按钮

2 个答案:

答案 0 :(得分:0)

看起来您已经解决了自己的问题。另一个方法是创建一个验证子,每次选择一个选项时,它实际上都会检查所有内容。还有一种方法可以访问所有表单控件,例如Forms('myform')。controls('mycontrol')。我承认我很生锈,但是如果您进行迭代,则可以根据需要禁用enable并在加载时调用

答案 1 :(得分:0)

  1. 处理启用/禁用而不是卸载和重新加载表单。
  2. 创建一个通用过程来处理启用/禁用,这样您就不必重复代码。
  3. 您可以遍历所有控件,这些控件不仅可以减少代码行,而且更易于维护。

这是您要尝试的吗?

Option Explicit

Private Sub OptionButton1_Click()
    EnableOptBtns False
End Sub

Private Sub OptionButton2_Click()
    EnableOptBtns False
End Sub

Private Sub OptionButton3_Click()
    EnableOptBtns True
End Sub

Private Sub EnableOptBtns(enable As Boolean)
    Dim ctl As Control
    Dim i As Long

    For i = 4 To 11
        Me.Controls("OptionButton" & i).Enabled = enable
    Next i
End Sub

enter image description here

相关问题