2017-05-10 126 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

您可以爲高級過濾器語句粘貼標題圖像嗎?這將有助於確定可能的錯誤原因。 –