【问题标题】:Shortcut to call multiple userform option buttons?调用多个用户窗体选项按钮的快捷方式?
【发布时间】:2014-04-21 20:56:28
【问题描述】:

我有一个带有 25 个 OptionButton(OptionButton1、OptionButton2 等)的用户表单

实际上,为了调用这些选项中的每一个,我创建了私有子选项 OptionButton1_Click、OptionButton2_Click 等。

有没有什么方法可以在不创建 25 个不同的潜艇的情况下访问不同的选项? (即 OptionButton[x]_Click)

【问题讨论】:

    标签: excel vba userform radio-button


    【解决方案1】:

    我认为简短的回答是否定的,但请查看here 以获得有趣的解决方法。你基本上可以伪造一个控件数组。

    除了帖子中提到的内容之外,您可能还需要考虑在 OptionButton.Tag 中存储某种标签,以便在单击它时(如果您愿意)知道单击了哪个 OptionButton。

    【讨论】:

    • 是的,我认为这不可能,但这是一个很好的解决方法。我决定最好制作 25 个私有子,设置我的变量并使用代码调用另一个子。但我会牢记这一点,以备将来之用。感谢大家的帮助。
    • 实际上,我认为制作 25 个调用中心方法的方法是最明智的选择——我会这样做。清晰(几乎)总是比代码长度更重要。
    【解决方案2】:

    您可以遍历所有选项按钮。例如:

    for i = 1 to 25
    
        If Controls("OptionButton" & i).Value = True Then
    
           'perform operation if OptionButton is clicked
    
         End If
    
    Next i
    

    【讨论】:

    • 如果每个选项按钮都有不同的名称,如果没有 25 个不同的 OptionButton[i]_Click subs,如何激活此循环?
    • 如果它们不是 OptionButton1、OptionButton2、Optionbutton3 等格式,那么我编写的代码将不起作用。我的建议是将所有选项按钮名称更改为 OptionButton1、OptionButton2 等...
    • 它们是这样命名的。我只是不确定如何激活 For Loop。我把那个代码放在哪里?如果我将它放在 Userform Initialize 子项下,它将在开始时运行一次,并且不会发生任何事情,因为尚未单击这些选项按钮。我认为这需要一个命令按钮,我不想使用它。
    猜你喜欢
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多