【问题标题】:linking two optionbuttons with single combo box for different rowsource [closed]将两个选项按钮与不同行源的单个组合框链接[关闭]
【发布时间】:2017-12-25 17:36:23
【问题描述】:

我有三张“display”、“whole_list”、“loose_list”。我只是在显示表中绘制了一个组合框和 2 个选项按钮。

我在 whole_list 和松散列表中有 200 个项目列表。我希望这样做,当我单击 optionbutton1 组合框时,将显示来自 whole_list 的列表。如果我点击 optionbutton2,它将显示来自松散列表的列表。

有人可以指导我创建我上面提到的那个吗?

【问题讨论】:

  • 请将您的帖子重新构建为问题,并提供您遇到问题的代码。

标签: excel combobox vbe radio-button vba


【解决方案1】:

所以我有空余时间,我想我会向您展示一种使用表单控件的方法。

这假定display 选项卡具有表单组合框和两个表单选项按钮。

whole_list 中设置一个名为 whole_list 的命名范围,涵盖您的 200 项列表,例如A1:A200 并为 loose_list 做同样的事情。

standard module 中输入以下内容:

Option Explicit
Dim myList As Variant

Private Sub OptionButton1_Click()

   mylist = ThisWorkbook.Worksheets("whole_list").Range("whole_list").Value

   PopulateComboBox myList

End Sub


Private Sub OptionButton2_Click()

   mylist = ThisWorkbook.Worksheets("loose_list").Range("loose_list").Value

   PopulateComboBox myList

End Sub

Private Sub PopulateComboBox(myList As Variant)

    Dim wb As Workbook
    Dim ws as Worksheet

    Set wb = ThisWorkbook
    Set ws = wb.worksheets("display")

    Dim myDropDown As DropDown

    Set myDropDown = ws.Shapes("Drop Down 1").OLEFormat.Object
    myDropDown.List = myList

End Sub 

确保对象和工作表名称匹配。您可以通过突出显示组合框和选项按钮名称,然后检查工作表左上角的 Name box 来检查它们。

右键单击每个选项按钮并选择assign macro 并将每个按钮与正确的OptionButton 单击子关联。

如果你的对象是ActiveX:

在包含 ActiveX 对象的工作表代码窗口中,例如display , 如果您右键单击选项卡并选择view code,它将弹出代码窗口并输入以下内容(假设您有两个命名范围)

Option Explicit
Public myList As Variant

Private Sub OptionButton1_Click()

   mylist = ThisWorkbook.Worksheets("whole_list").Range("whole_list").Value

   Me.ComboBox1.List = myList

End Sub


Private Sub OptionButton2_Click()

   mylist = ThisWorkbook.Worksheets("loose_list").Range("loose_list").Value

   Me.ComboBox1.List = myList

End Sub

不需要额外的过程,也不需要右键单击和分配宏。 Me 部分表示参考代码所在的工作表。如果您在工作表代码的顶部有 Option Explicit,那么您应该会收到一个提示,其中包括您的组合框的名称,以及可用的选项,但您也可以从工作表中的Name Box 获取它。在这里,我的组合框称为Combobox1

【讨论】:

  • 嗨,感谢您的时间和回答。我照你说的做了。我有一些问题。 1.optionbutton是ActiveX控件,我可以在哪里分配宏? 2.设置 myDropDown = ws.Shapes("Drop Down 1").OLEFormat.object 这一行我不明白,也有调试错误“未找到具有指定名称的项目”请修复此错误。也许我更接近完成这个。谢谢!
  • OptionButton1, OptionButton2, ComboBox1
  • 谢谢你们!你太棒了。它运作良好。
猜你喜欢
  • 2014-01-16
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2019-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多