所以我有空余时间,我想我会向您展示一种使用表单控件的方法。
这假定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。