根据过滤后的 table 数据填充组合框
Fill combobox based on filtered table data
在 Excel 2013 年,我有一个 sheet 包含格式化的 table - 表 1。 table 有两列,[Product Group] 和 [Product Name] :
我使用 VBA 创建了一个包含两个组合框的简单表单,cbProductGroup
和 cbProductName
。
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 列列表加载到集合中,以防止加载重复项。
在 Excel 2013 年,我有一个 sheet 包含格式化的 table - 表 1。 table 有两列,[Product Group] 和 [Product Name] :
我使用 VBA 创建了一个包含两个组合框的简单表单,cbProductGroup
和 cbProductName
。
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 列列表加载到集合中,以防止加载重复项。