VBA需求:根据List_Mat选中物料在List_Into展示对应产品
解决方案
实现逻辑
- 给
List_Mat列表框绑定Click事件,点击时触发查询 - 读取"Stammdaten"工作表的物料数据,筛选出选中原材料对应的所有产品
- 清空
List_Into后,将匹配结果填充进去
可运行代码示例
Private Sub List_Mat_Click() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim selectedMat As Variant ' 获取选中的原材料编号 selectedMat = List_Mat.Value If IsEmpty(selectedMat) Then Exit Sub ' 清空目标列表框 List_Into.Clear ' 指向数据存储工作表 Set ws = ThisWorkbook.Worksheets("Stammdaten") lastRow = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row ' 遍历K列,匹配原材料并添加对应产品 For i = 2 To lastRow ' 假设第1行为表头,无表头则改为i=1 If ws.Cells(i, "K").Value = selectedMat Then ' 此处假设产品编号在J列,根据实际表格结构修改列标识 List_Into.AddItem ws.Cells(i, "J").Value End If Next i ' 无匹配结果时提示 If List_Into.ListCount = 0 Then List_Into.AddItem "未找到使用该原材料的产品" End If End Sub
需根据实际情况调整的点
- 产品列位置:代码中默认产品在J列,需替换为你表格中实际的产品列标识(比如
"A"或数字序号) - 表头判断:如果数据行从第1行开始,把循环起始值
i=2改成i=1 - 数据类型匹配:若原材料编号是数字格式,将
selectedMat改为CLng(List_Mat.Value)确保类型一致
排查要点
- 确认"Stammdaten"工作表名称完全匹配(大小写敏感)
- 检查
List_Mat的数据源是否已正确加载原材料列表 - 确保文件已启用宏,否则代码无法执行
内容的提问来源于stack exchange,提问作者Peet_Wackel
相关产品推荐
相关产品推荐

