繁体   English   中英

Excel Macro Autofilter问题与变量

[英]Excel Macro Autofilter issue with variable

我有一个数据表,其中第一行是过滤器,我有一个循环,该循环更改需要在循环内部使用的过滤器是变量filterColumn,每次循环运行时都会为其分配一个新值。

当我尝试使用filterColumn确定将“打开”哪个过滤器时,出现错误

范围类别的自动筛选方法失败

ActiveSheet.Range("$U$83:$CV$1217").AutoFilter Field:=filterColumn, Criteria1:="<>"

为了使用变量确定过滤器位于哪个字段中,正确的语法是什么?

解决问题我找到了解决方案。 我实际上是在整个过滤器中引用过滤器列的位置,而实际上我应该在过滤器组中引用它的编号。 例如,我要更改的过滤器位于“ CF”列中的第84列中,但我要更改的过滤器在该组中排名第64位。

Dim filterColumn As Integer
filterColumn = 2
ActiveSheet.Range("$U$83:$CV$1217").AutoFilter Field:=filterColumn, _
    Criteria1:="<>"

编辑 :我尝试@HeadofCatering的解决方案,并最初失败了。 但是,我在引用的列中填充了值,并且它起作用了(我的解决方案在相反的条件下也失败了-将列标题设置为空白,它将失败)。

但是,这与我(也许您已经)看到的内容不太吻合-您绝对可以为带有空白标题的列添加过滤器。 但是,有一件事情与我看到的失败是一致的filterColumn引用了Application.UsedRange之外的列。 您可能想要尝试验证您所引用的列是否确实在Application.UsedRange (简便方法:在“即时窗口”中运行Application.UsedRange.Select ,然后查看是否已选择该列)。 由于您要引用大量的列,因此可能没有某个点(包括列标题)之后的值,并且当您指定要过滤的列时,实际上是在UsedRange之外指定了某些UsedRange

要测试的一件有趣的事情(这对我也是新的),是一张空白纸,在单元格A1B1填写值,选择列A:G并手动添加自动过滤器-这只会将过滤器添加到列A和B(如果您尝试将过滤器添加到完全空白的工作表中,则会发现相关情况)。

对不起您的胡言乱语-这可能甚至不是您的问题:)


旧的解决方案(使用上述条件时不起作用)

我可能对此过于矫kill过正,但也请尝试设置工作表值(请注意,我在此处使用了示例范围):

Sub SOTest()

Dim ws As Worksheet
Dim filterColumn As Integer

' Set the sheet object and declare your variable
Set ws = ActiveSheet
filterColumn = 2

' Now try the filter
ws.Range("$A$1:$E$10").AutoFilter Field:=filterColumn, Criteria1:="<>"

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM