我有三张“display”,“whole_list”,“loose_list”。我只是在显示表中绘制了一个组合框和2个选项按钮。
我在whole_list和loose_list中有200个项目列表。我希望当我点击optionbutton1组合框时会显示整个列表中的列表。如果我点击optionbutton2,它会显示loose_list中的列表。
有人可以指导我创建我上面提到的吗?
答案 0 :(得分:0)
所以我有空闲时间,并认为我会告诉你一种使用Forms控件的方法。
这假定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
。