Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA过滤器卡在第二行_Vba_Excel_Filter - Fatal编程技术网

VBA过滤器卡在第二行

VBA过滤器卡在第二行,vba,excel,filter,Vba,Excel,Filter,我使用以下代码在多个工作表上进行筛选: 场景是我从一个工作簿复制数据并将其粘贴到当前工作簿。工作表(表1至表13 S)通过公式从工作表中提取复制数据。我对其他具有相同结构化数据的工作簿使用了相同的代码,唯一的区别是我复制了不同的行 出于某种奇怪的原因,在本工作簿中,从表1到表13,文件管理器卡在第二行。然而,对于表1s至表13s,过滤器均正常 我在为这个哈哈大笑而努力 Set y = ActiveWorkbook y.Sheets("Table 1").Range("AA2").AutoFil

我使用以下代码在多个工作表上进行筛选:

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

出于某种奇怪的原因,在本工作簿中,从表1到表13,文件管理器卡在第二行。然而,对于表1s至表13s,过滤器均正常

我在为这个哈哈大笑而努力

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"

我无法复制您遇到的确切问题。工作表之间可能存在某些差异,使得Excel无法正确猜测筛选范围。我不知道问题的根本原因是什么,但我认为告诉excel要设置过滤器的显式范围将解决问题。否则,excel会猜测您想要的范围

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

y.Sheets(“表1”)。范围(“AA1:AF500”)。自动筛选字段:=27,标准1:=“x”


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

当您说过滤器卡在第二行时,您的意思是下拉列表在第二行吗?@Jarom是的,下拉列表在第二行尝试将所有范围更改为
.range(“AA2”)
。UsedRange
如下:
y(“表1”).UsedRange.AutoFilter字段:=27,标准1:=“x”
@paulbica哇,这真是个奇迹!我很高兴你把它整理好了!我想你是对的-我可以用2个标题复制这个问题rows@Jarom我使用了paul bica的方法,将all range设置为usedrange,现在下拉列表位于正确的位置。