您好,我是VBA编码的新手,但无论如何都不是愚蠢的。
我的组合框当前仅搜索完全匹配,而我似乎无法获得任何允许仅显示部分匹配的代码。
E.x
我有300多个订单项的数据库列表,例如:
HM 200-5
小松300 LC-8
普通劳工
建筑工头
等等...
当我在组合框中搜索“一般劳工”时,我必须逐字逐字地键入该字,否则什么也没有发生,这也要求输入该字的开头部分,因此即使我要键入“ laborer”(劳工)完全正确的拼写,一般劳工仍不会出现,因为这并不完全匹配,因为它一开始缺少“ general”(通用)部分。我希望能够键入单词的任何部分以及与该单词匹配的任何内容,以使其出现在组合框的下拉列表中。因此,如果我只键入“劳工”,一般劳工仍会出现,或者如果我键入“ 200-5”,则HM 200-5将会出现。 (目前情况并非如此)
我已经看到其他代码在论坛上发布,这对我毫无帮助,因为没人能解释他们的代码,数据在哪里,我可能必须更改自己工作表的自定义单词,我发现是懒惰和令人沮丧的。
当前在以下代码中使用的代码:
Dim ws5 As Worksheet
Dim Rng As Range, r As Range
Dim search As String
search = "=" & cboKategorie.Value & "*"
Set ws5 = Worksheets(5)
With ws5
Set Rng = .Range("A2", .Range("A2").End(xlDown))
For Each r In Rng
If r.Value = cboKategorie.Value Then Exit Sub
Next r
.ListObjects("tblKategorien").Range.AutoFilter Field:=1, Criteria1:=search
Set Rng = .Range("A2",
.Range("A2").End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
End With
cboKategorie.Clear
For Each r In Rng
cboKategorie.AddItem (r.Value)
Next r
ws5.ListObjects("tblKategorien").Range.AutoFilter Field:=1
End Sub
据我所知(当然,他根本不提供任何有关他的代码和数据的解释。)他的数据在工作表(5)上,而他的数据从Cell A2开始并持续向下。另外,cboKategorie到底是什么?我假设一种类型的代码?还是这是我需要更改为特定于他的工作表的工作表? (这些是我希望人们在其中张贴代码的详细信息),就我能告诉它的德语类别而言?为什么将德语和英语代码混在一起?没有道理。
由于数据在工作表(2)上,因此我将这段代码准确地绑定为将WS5更改为WS2。我的数据也从A5单元格开始,并继续向下,因此我将Range值从A2更改为A5。
除此之外,我没有更改代码的任何内容,我在哪里出错了?为什么它不起作用,为了使此代码正常工作,我可能需要更改或重新做些什么?还有另一个更好的代码吗?
下面链接到我使用的原始帖子和代码。 (是的,我将组合框设置更改为Match = none,但仍然无法获得任何结果)
Excel Combobox filter for partial matches
任何帮助将不胜感激。