2017-05-10 157 views
0

我试图调试一些旧代码(不是由我写的),我得到以下运行时错误(1004)第一次AdvancedFilter方法在下面的代码中。Excel VBA - 提取范围丢失或Range.AdvancedFilter上的非法错误

提取区域具有丢失或非法的字段名称

Application.Goto Reference:="first_line" 
'Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Name = "data" 

Application.Goto Reference:="heading" 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Name = "base" 

Application.Goto Reference:="col_last" 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Name = "test_last" 



Sheets("work").Visible = True 
Application.Goto Reference:="base" 



Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(_ 
    "CsummaryA"), CopyToRange:=Range("SsummaryA"), Unique:=False 

' error actually happens at this line, not the previous one as I stated previously 
Application.Goto Reference:="base" 
Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(_ 
    "Csummary"), CopyToRange:=Range("Ssummary"), Unique:=True 

上什么可能会导致错误的任何想法?

+0

被复制的范围是否有空标题? – JNevill

+0

这两个区域中的标题看起来不错,但感谢您指出了这一点。 – warsong

回答

1

确保CriteriaRange和CopyToRange中的列标题在拼写方式上完全相同,并且JNevill提到的没有空标题。列的顺序无关紧要,只要它们拼写相同即可。

+0

这两个范围(CsummaryA和SsummaryA)的错误甚至不是很相似。真正令人困惑的是,在具有类似代码的另一行上,错误不会发生。 – warsong

+0

您可以为高级过滤器语句粘贴标题图像吗?这将有助于确定可能的错误原因。 –