Excel 筛选填充的列表框并保留多个选择
上下文 我已经为我们公司的一个生产部门制定了维护计划。作为额外的补充,我们想登记他们使用的备件和数量。这个部门有四台机器。每台机器都有自己的Excel维护计划 说明应用程序 我制作了一个外部中心列表,通过Excel 筛选填充的列表框并保留多个选择,excel,vba,filter,listbox,Excel,Vba,Filter,Listbox,上下文 我已经为我们公司的一个生产部门制定了维护计划。作为额外的补充,我们想登记他们使用的备件和数量。这个部门有四台机器。每台机器都有自己的Excel维护计划 说明应用程序 我制作了一个外部中心列表,通过Set myData=Workbooks.open(“Hyperlink”)打开该列表。此清单包含机器的所有备件。我将此列表列在外部,因为机器的操作员还需要能够添加额外的零件。 然后,我用外部列表中的所有备件填充一个列表框。填充列表框后,我关闭外部列表,以便其他人可以打开该列表。下图显示了use
Set myData=Workbooks.open(“Hyperlink”)
打开该列表。此清单包含机器的所有备件。我将此列表列在外部,因为机器的操作员还需要能够添加额外的零件。
然后,我用外部列表中的所有备件填充一个列表框。填充列表框后,我关闭外部列表,以便其他人可以打开该列表。下图显示了userform的外观。列表框现在充满了虚拟产品,因为我还在测试它
机器操作员需要能够选择多个备件
问题
我希望操作员能够过滤列表框,同时选择多个备件。这就是它变得棘手的地方
我知道如何过滤列表框,但我的方法每次都会重置列表框,因此无法选择多个产品。我已经看了一些关于堆栈溢出的其他主题,但它们也有相同的问题
问题
有什么方法可以过滤列表框、选择一个项目、再次过滤、选择另一个项目、再次过滤、再次选择另一个项目等?
*在不打开源工作表的情况下筛选填充的列表框
先谢谢你
在@JvdV的帮助下,我解决了部分问题。His确保我可以选择一些产品并保存选择。这使我能够为过滤列表框的文本框添加一些代码。此代码通过删除与文本框不相等的所有内容来过滤填充的列表框 当文本框被清空到
“
时,列表框被重置并再次填充。请参阅下面的全部代码
Private Sub FilterProdNr_Change()
For i = UsedPart.ListCount - 1 To 0 Step -1
If InStr(1, UsedPart.List(i), FilterProdNr) = 0 Then UsedPart.RemoveItem (i)
Next i
If FilterProdNr = "" Then
UsedPart.Clear
Dim myData As Workbook
Dim cProd As Range
Dim ws As Worksheet
Set myData = Workbooks.Open("Hyperlink")
Set ws = Worksheets("OnderhoudPartsCentraal")
For Each cProd In ws.Range("Product_nummer")
With Me.UsedPart
.AddItem cProd.Value & " <> " & cProd.Offset(0, 1).Value
End With
Next cProd
myData.Close
End If
End Sub
Private Sub FilterProdNr_Change()
对于i=UsedPart.ListCount-1到0步骤-1
如果InStr(1,UsedPart.List(i),FilterProdNr)=0,则UsedPart.RemoveItem(i)
接下来我
如果FilterProdNr=“”,则
用过了,明白了
将myData设置为工作簿
将cProd变暗为范围
将ws设置为工作表
设置myData=工作簿。打开(“超链接”)
设置ws=工作表(“OnderhoudPartsCentraal”)
对于ws.范围内的每个cProd(“产品编号”)
和我一起。用零件
.AddItem cProd.Value&&cProd.Offset(0,1).Value
以
下一个cProd
我的数据,关闭
如果结束
端接头
在上面/旁边各有两个列表框。使用它们之间的上/左和下/右箭头添加到选定项目或从第二个列表框中删除选定项目。类似的东西看起来很有希望,我会试试看。非常感谢。