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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将两个选项按钮与单个组合框链接,用于不同的行源[关闭]相关的知识,希望对你有一定的参考价值。

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

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

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

答案

所以我有时间,并认为我会告诉你一个表格控件的方式。

假设display选项卡具有Form组合框和两个Form选项按钮。

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

以上是关于将两个选项按钮与单个组合框链接,用于不同的行源[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何链接多个组合框表中的两个组合框?

在列表框中显示所有记录

Access VBA中不稳定的组合框比较

组合框级联效果不适用于不同的行

更新取消事件之前的 MS Access 不适用于未绑定的组合框

组合框级联效应不适用于不同的行