根据过滤后的 table 数据填充组合框

Fill combobox based on filtered table data

在 Excel 2013 年,我有一个 sheet 包含格式化的 table - 表 1。 table 有两列,[Product Group] 和 [Product Name] :

我使用 VBA 创建了一个包含两个组合框的简单表单,cbProductGroupcbProductName

cpProductGroup 使用 RowSource 属性 和命名范围 (=ProductGroupName) 填充。我需要的是 cbProductName 只填充与 cbProductGroup 中的产品组匹配的产品名称,例如在 cbProductGroup 中选择 "Laptop" 应该只产生一个包含两个的下拉列表联想笔记本电脑。

这是否可以通过某种方式实现?

编辑 2015 年 4 月 17 日解决:

我使用 cbProductGroup 的更改事件并添加以下代码解决了这个问题:

Private Sub cbProductGroup_Change()

    Me.cbProductName.Clear

    Dim lastRow As Long
    Dim shtInventory As Worksheet
    Set shtInventory = Sheets("Inventory")

    With shtInventory

        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 6 To lastRow
            If Me.cbProductGroup = .Cells(i, "A") Then
                Me.cbProductName.AddItem .Cells(i, "C")
            End If
        Next
    End With

感谢大家提供宝贵的意见和建议。

是的,您想清空然后重新加载由 cbProductGroup 控件的 onChange 事件触发的 CBProductName。 Google 使用 combobox.add 方法从第二列分配值的代码。您还可以将第 2 列列表加载到集合中,以防止加载重复项。