So i have time to spare and thought i would show you a way with Forms controls.
This assumes display
tab has the Form combobox and the two Form option buttons.
In whole_list
set up a named range called whole_list
covering your list of 200 items e.g. A1:A200
and do the same thing for loose_list
.
In a standard module
enter the following:
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
Make sure the object and sheet names match up. You can check the combobox and option button names by highlighting them and then checking the Name box
at the top left of the sheet.
Right click each Option Button and choose assign macro
and associate each button with the correct OptionButton
click sub.
If your objects are ActiveX
:
In the worksheet code window containing your ActiveX
objects e.g. display
,
if you right click on the tab and select view code
, it will bring up the code window and enter the following (Assuming you have the two named ranges as before)
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
No additional procedure needed and no right click and assigning of macros. The Me
part says take the reference of the sheet the code is in. If you have Option Explicit
, at the top of the worksheet code, then you should receive a prompt which includes the name of your combobox, amongst the options available, but you can also get it from the Name Box
in the sheet. Here, my combobox is called Combobox1
.