如何按名称而不是索引为 VBA 的自动过滤功能指定列?

sud*_*nym 2 excel vba

我是 VBA 的新手并试图自动过滤列范围。该列名为“Vlookup”,位于索引位置 27。

rData.AutoFilter field:=27, Criteria1:="Class" ' filter criterion
Run Code Online (Sandbox Code Playgroud)

为了使这个动态,我需要能够根据列名而不是列索引进行过滤。

但是,当我这样做时

rData.AutoFilter field:=Application.Match("Vlookup", Selection.Rows(1), 0), Criteria1:="Class"  ' filter criterion
Run Code Online (Sandbox Code Playgroud)

我屈服

运行时错误“424”-需要对象

如何Autofilter在 VBA 中正确按列名?

小智 5

不确定您选择了哪个选项,但我们遇到了类似的问题,我们发现它就像为您的数据使用表一样简单,然后使用 Field:=Listobject.ListColumns("Column Name").Index。这样您的解决方案就是动态的。

Set rData = Workbooks("Workbook Name").Worksheets("Sheet Name").Listobjects("Table Name")
rData.DataBodyRange.AutoFilter field:=rData.ListColumns("Vlookup").Index, Criteria1:="Class"
Run Code Online (Sandbox Code Playgroud)