【问题标题】:VBA Filter stuck on second rowVBA过滤器卡在第二行
【发布时间】:2018-04-20 20:29:09
【问题描述】:

我正在使用以下代码过滤多个工作表:

场景是我从一个工作簿复制数据并将它们粘贴到当前工作簿。表格(表 1 到表 13 S)通过公式从带有复制数据的表格中提取数据。我对具有相同结构化数据的其他工作簿使用了相同的代码,唯一的区别是我复制了不同的行。

由于某种奇怪的原因,在此工作簿中,从表 1 到表 13,文件管理器卡在第二行。但是,对于表 1 S 到表 13 S,过滤器都是正常的。

我正在为这个大声笑拔头发......

Set y = ActiveWorkbook

y.Sheets("Table 1").Range("AA2").AutoFilter Field:=27, Criteria1:="x"
y.Sheets("Table 2").Range("AB2").AutoFilter Field:=28, Criteria1:="x"
y.Sheets("Table 3").Range("AC2").AutoFilter Field:=29, Criteria1:="x"
y.Sheets("Table 4").Range("AD2").AutoFilter Field:=30, Criteria1:="x"
y.Sheets("Table 8").Range("AE2").AutoFilter Field:=31, Criteria1:="x"
y.Sheets("Table 11").Range("AF2").AutoFilter Field:=32, Criteria1:="x"
y.Sheets("Table 12").Range("AG2").AutoFilter Field:=33, Criteria1:="x"
y.Sheets("Table 13").Range("AH2").AutoFilter Field:=34, Criteria1:="x"

y.Sheets("Table 1 S").Range("AA2").AutoFilter Field:=27, Criteria1:="x"
y.Sheets("Table 2 S").Range("AB2").AutoFilter Field:=28, Criteria1:="x"
y.Sheets("Table 3 S").Range("AC2").AutoFilter Field:=29, Criteria1:="x"
y.Sheets("Table 4 S").Range("AD2").AutoFilter Field:=30, Criteria1:="x"
y.Sheets("Table 8 S").Range("AE2").AutoFilter Field:=31, Criteria1:="x"
y.Sheets("Table 11 S").Range("AF2").AutoFilter Field:=32, Criteria1:="x"
y.Sheets("Table 12 S").Range("AG2").AutoFilter Field:=33, Criteria1:="x"
y.Sheets("Table 13 S").Range("AH2").AutoFilter Field:=34, Criteria1:="x"

【问题讨论】:

  • 当您说过滤器卡在第二行时,您的意思是下拉菜单在第二行吗?
  • @Jarom 是的,下拉菜单在第二行
  • 尝试将.Range("AA2")等所有范围更改为.UsedRange,如下所示:y.Sheets("Table 1").UsedRange.AutoFilter Field:=27, Criteria1:="x"
  • @paulbica 哇,这真是个奇迹!
  • 很高兴你解决了问题!

标签: vba excel filter


【解决方案1】:

我无法复制您遇到的确切问题。工作表之间可能存在一些不同,导致 Excel 错误地猜测过滤范围。我不知道问题的根本原因是什么,但我认为告诉 excel 明确范围以放置过滤器将解决问题。否则excel会猜测你想要的范围。

例如,如果Table 1 的数据范围(包括标题)是 AA1 到 AF500,那么我会让代码如下所示:

y.Sheets("Table 1").Range("AA1:AF500").AutoFilter Field:=27, Criteria1:="x"

如果范围是动态的,VBA 有很多不同的方法来处理它。因此,您可以使用其中一种技术明确指定动态范围。

【讨论】:

  • 我认为你是对的 - 我能够通过设置 2 个标题行来复制问题
  • @Jarom 我使用了paul bica的方法,将所有范围设置为usedrange,现在下拉列表在正确的位置。
猜你喜欢
  • 1970-01-01
  • 2015-07-03
  • 2021-01-29
  • 1970-01-01
  • 2012-12-03
  • 2020-10-07
  • 2018-04-19
  • 2012-05-14
  • 1970-01-01
相关资源
最近更新 更多