将两个选项按钮与单个组合框链接,用于不同的行源

时间:2017-12-24 13:09:43

标签: excel excel-vba combobox vbe radio-button vba

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

我在whole_list和loose_list中有200个项目列表。我希望当我点击optionbutton1组合框时会显示整个列表中的列表。如果我点击optionbutton2,它会显示loose_list中的列表。

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

1 个答案:

答案 0 :(得分:0)

所以我有空闲时间,并认为我会告诉你一种使用Forms控件的方法。

这假定display标签包含表格组合框和两个表格选项按钮。

whole_list中设置名为whole_list的命名范围,涵盖200个项目的列表,例如A1:A200loose_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