我是 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)