根据过滤的表格数据填充组合框

时间:2015-04-09 11:29:19

标签: excel excel-vba excel-2013 vba

在Excel 2013中,我有一张包含格式化表格的表格 - 表1。该表有两列,[产品组]和[产品名称]:

enter image description here

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

使用RowSource属性和命名的ranged(= ProductGroupName)填充

cpProductGroup。我需要的是cbProductName仅填充与cbProductGroup中的产品组匹配的产品名称,例如选择"笔记本电脑"在cbProductGroup中只应生成包含两台Lenovo笔记本电脑的下拉列表。

这可以以某种方式实现吗?

编辑17-04-2015已解决:

我使用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

感谢大家提供有价值的意见和建议。

1 个答案:

答案 0 :(得分:1)

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