如何在excel数据中使用组合框进行筛选搜索?

mspsb9vt  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(140)

我写这段代码是为了使用组合框中的一个选项来创建一个筛选搜索,但是当我点击搜索按钮时,我得到一个错误,说criteria参数没有定义。我不知道为什么,因为我声明了我的criteria是我的组合框的值。

Private Sub cmdSearch_Click()

Dim Frequency As String
Dim wsTL2 As Worksheet
Set wsTL2 = Worksheets("Task List 2")
Frequency = ComboBoxFreq.Value
Dim rngC As Range
Set rngC = wsTL2.Range("C")

wsTL2.ListObjects(rngC).Range.AutoFilter Field:=3, Criteria:=Frequency & "*"

End Sub

jchrr9hc

jchrr9hc1#

这里的事情不多,让我们根据下面的假设从上面开始:

  • 您希望rngC是整个表,并按列C进行筛选。
  • 表格本身未格式化为“table”(因为屏幕截图中未显示)

以下范围设置不正确

Set rngC = wsTL2.Range("C")

假设您只想选择列C,则需要

Set rngC = wsTL2.Range("C:C")

然后,您可以按如下方式设置自动筛选,特别注意Criteria1设置,尽管这样现在只会筛选列C

rngC.AutoFilter Field:=1, Criteria1:="Daily" 'as an example

如果您想让整个数据表都依数据行C筛选,您必须设定正确的Range对象,如下所示:

Set rngC = wsTL2.Range("A1:C100") 'assuming that is the range of the data

如果您的表确实是一个“table”,则会按照原始代码使其成为一个“ListObject”。
如果是这种情况,您需要表的名称或索引(如果您已通过XL中的“Format as Table”函数进行了设置,则名称可能为“Table1”),然后只需将rngC对象设置为Table1对象的范围,如下所示:

Set rngC = wsTL2.ListObjects("Table1").Range

然后根据上面rngCAutofilter设置设置过滤器,假设您要在C列上进行过滤

rngC.AutoFilter Field:=3, Criteria1:="Daily" 'as an example

因此,从根本上说,Autofilter方法总是应用于一个范围,您需要确保正确设置相关范围。

相关问题