2017-02-20 32 views
0

我想過濾一個名稱爲「Sales Level 1」的列名稱,它包含很多銷售級別,我只需要「美洲,全球服務提供商,WW分銷」從A到Y以及共計43295條記錄。自動篩選器VBA幫助「錯誤1004」

這裏是我的代碼拋出錯誤1004「範圍類的自動篩選方法失敗」

Dim objXLApp As Object  
Dim xlApp As Object 

Set xlApp = CreateObject("Excel.Application") 

xlApp.Activesheet.Range("$A1:$Y43295").AutoFilter Field:=16,_  
Criteria1:=Array("Americas", "GLOBAL SERVICE PROVIDER", "WW Distribution"),_ 
     Operator:=xlFilterValues 

我有這個功能的其他代碼,這是其中之一。

+0

這是唯一的代碼運行時,自動過濾器方法被調用?如果我沒有弄錯,您需要將範圍設置爲可以在更改標準之前進行自動過濾。我可能會誤會,因爲我經常不使用自動過濾器,但這是我首先要檢查的地方。另外,您正在創建一個Excel應用程序,但您並未創建文件?你只是想打開一張紙和過濾嗎?您可以使用FollowHyperlink或Workbooks.Open來達到此目的。 –

+1

你的線路延續是非法的。行連續標記由空白後跟下劃線定義 - 您發佈的代碼甚至不會編譯。另外第一個可執行指令'Set xlApp = ...'獨立運行,繼續執行它會混淆VBA ......並且不會編譯。 –

+0

嘿,謝謝你的回覆!我發佈我的代碼時發生錯誤。我的實際代碼是xlApp.Activesheet.Range(「$ A1:$ Y43295」)。AutoFilter Field:= 16,_ Criteria1:= Array(「Americas」,「GLOBAL SERVICE PROVIDER」,「WW Distribution」),_ 操作員:= xlFilterValues –

回答

1

我想這是因爲「創建對象」你開始一個新的Excel實例,以使ActiveSheet將是一個空

而如果你想趕上已經有合適的紙張作爲運行Excel實例「活動「一個

Dim objXLApp As Object  
Dim xlApp As Object 

Set xlApp = GetObject(,"Excel.Application") 

xlApp.Activesheet.Range("$A1:$Y43295").AutoFilter Field:=16, Criteria1:=Array("Americas", "GLOBAL SERVICE PROVIDER", "WW Distribution"), Operator:=xlFilterValues 
+0

謝謝!但是我在我的帖子中犯了一個錯誤。我的代碼與您發佈的代碼完全相同,並且引發了該錯誤。我並不想在set語句後加「_」 –

+1

@MilanBillimoria你的文章調用'CreateObject'(創建一個新實例)。這個答案是調用'GetObject'(使用現有的實例)。如果你的*實際代碼*使用'GetObject',那麼你應該編輯你的問題來說明。人們無法猜測你的*實際代碼*的樣子,並且記住每次有新答案時都會發生變化的「變色龍問題」對於每個參與者都是非常惱人的。請在SO上提問時花些時間*。 –

+0

@ Mat'sMug,「變色龍問題」,很酷的措辭! – user3598756