【问题标题】:Grey out optionbuttons when a specific option button is selected选择特定选项按钮时选项按钮变灰
【发布时间】:2020-02-02 03:30:33
【问题描述】:

今天早上我问了一个类似的问题,我得到了一个很好的答案,但后来我推得更远了,这就是我有点卡住的地方。

这是我最初的帖子: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(组类别)。

编辑:

我做了一些事情并且它起作用了,但是一旦我运行我的用户表单并生成一个数字(用户表单目的),选项按钮就会保持灰色。这是我使用的代码:

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

所以它重置了我的用户表单并删除了灰色的选项按钮

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    看来您解决了自己的问题。另一种方法是创建一个验证子,每次选择一个选项时它都会检查所有内容。还有一种方法可以访问所有表单控件,例如 Forms('myform').controls('mycontrol') 我承认我生疏了,但是如果您遍历,可以根据需要禁用启用并在加载时调用它

    【讨论】:

      【解决方案2】:
      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
      

      【讨论】:

      • 感谢您的回答!是的,这就是我想要的,你的方式也有效。唯一的问题是,当我在我的用户表单中生成我的号码时,用户表单应该重置,所以我可以再次使用用户表单,但选项按钮保持灰色!这就是我使用unload me 的原因。而且你的方式在第一次使用后并没有使它们变得模糊......也许它不起作用,因为我没有使用你的 Option Explicit ?只有那之后的代码?
      • The userform is suppose to resets 您可以使用EnableOptBtns True 重置选项按钮。您可以在 commnadbutton 中或从任何您想要的位置重置它。无需卸载和重新加载
      猜你喜欢
      • 2013-01-09
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多