Excel组合框部分过滤器代码

时间:2018-06-21 19:03:28

标签: excel excel-vba combobox vba

您好,我是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

任何帮助将不胜感激。

0 个答案:

没有答案