Excel自动筛选器问题,其中criteria1范围使用行列而不是地址

时间:2018-02-08 02:11:49

标签: excel-vba autofilter vba excel

我有一个巨大的宏,我正在努力减少,通过使用循环结构来替换当前使用的硬编码地址与变量。 其中一个陈述是使用单元格地址

with worksheets("Sheet1")
    .Cells(4, 1).AutoFilter Field:=36, Criteria1:=Worksheets("Test").Range("c1")
end with

我想使用行/列

在此示例中col = 3,我收到运行时错误“1004”错误:

“应用程序定义或对象定义”

.Cells(4, 1).AutoFilter Field:=36, Criteria1:=Worksheets("Test").Range(Cells(1, col), Cells(1, col))

对于此用例,将地址转换为变量的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

.Cells(4, 1).AutoFilter Field:=36, _
       Criteria1:=Worksheets("Test").Range(Cells(1, col), Cells(1, col))

这里Range()的范围是"测试"表格,但不合格的Cells()将参考活动表格:如果不是"测试"然后你会得到1004错误。

由于您只有一个单格范围,因此可以使用:

.Cells(4, 1).AutoFilter Field:=36, _
       Criteria1:=Worksheets("Test").Cells(1, col)