2014-10-16 143 views
0

讓我首先承認我是VBA的新手(雖然我已經設法使用本網站的最後2條年份)。但我完全跺腳在這一個。Excel VBA:高級過濾器將數據複製到另一個工作簿

我有一個工作簿與一個工作表上的搜索界面和另一個工作表上的數據庫。 這是我使用做返回的搜索界面表中的數據對數據庫的高級篩選代碼:

Private Sub Find_Click() 
    Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ 
    CriteriaRange:=Sheet4.Range("V1:AE2"), CopyToRange:=Sheet4.Range("E1:T1"), Unique:=False 
End Sub 

我現在想給2個工作表分成2個工作簿。因此,高級篩選將針對工作簿「數據」中包含的數據執行,並將結果返回到工作簿「SearchInterface」。 2個工作簿將始終在同一時間打開。

我試圖把各種變量:在

wbData.Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy 

我試過很多東西,但沒有任何工程

Private Sub Find_Click() 
Set wbSearch = ThisWorkbook 
Set wbData = Workbooks("GAL_db.xlsx") 

     wbData.Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 
     CriteriaRange:=wbSearch.Sheet4.Range("V1:AE2"), CopyToRange:=wbSearch.Sheet4.Range("E1:T1"), Unique:=False 

End Sub 

獲取語法錯誤。不是太知識淵博,我幾乎在黑暗中拍攝。任何幫助或方向將不勝感激。

== UPDATE ===

感謝輸入羅裏! 我改變了代碼的建議是:

Private Sub Find_Click() 
Set wbData = Workbooks("GAL_db.xlsx") 

     wbData.Sheets("Sheet2").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 
     CriteriaRange:=Sheet4.Range("V1:AE2"), CopyToRange:=Sheet4.Range("E1:T1"), Unique:=False 

End Sub 

現在,我再次得到一個語法錯誤有:

wbData.Sheets("Sheet2").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 

Private Sub Find_Click()以黃色突出顯示...

+0

錯誤消息和在哪一行? – 2014-10-16 15:14:35

+3

您不能在其他工作簿中使用工作表的代號(除非您有參考集),因此您需要使用'wbData.Sheets(「Sheet2」)'而不是'wbData.Sheet2'(調整工作表名稱有必要的)。 – Rory 2014-10-16 15:16:37

+0

改變'表(「Sheet2的」)之後'我現在得到一個編譯錯誤:預期表達式後「CriteriaRange:=」 – acadie 2014-10-16 15:43:17

回答

0

好吧,通過試驗和錯誤我得到它的工作! Yeeey!不知道爲什麼,但它只適用於將Sheet4作爲工作表(1)引用。以下是適用於我的目的的代碼:

Private Sub Find_Click() 
Dim wbData As Range 
Dim wbCriteria As Range 
Dim wbExtract As Range 

Set wbData = Workbooks("GAL_db.xlsx").Worksheets("data").Range("A1") 
Set wbCriteria = ThisWorkbook.Worksheets(1).Range("V1:AE2") 
Set wbExtract = ThisWorkbook.Worksheets(1).Range("E1:T1") 

     wbData.CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ 
     CriteriaRange:=wbCriteria, CopyToRange:=wbExtract, Unique:=False 

End Sub 
0

我想您正在尋找2種解決方案的組合...

Private Sub Find_Click() 
Set wbSearch = ThisWorkbook 
Set wbData = Workbooks("GAL_db.xlsx") 

     wbData.Sheets("Sheet2").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 
     CriteriaRange:=wbSearch.Sheets("Sheet4").Range("V1:AE2"), CopyToRange:=wbSearch.Sheets("Sheet4").Range("E1:T1"), Unique:=False 

End Sub 
+0

thx爲輸入Rude Dawg!但我仍然得到了'wbData.Sheets(「Sheet2」)行的語法錯誤。Range(「A1」)。CurrentRegion.AdvancedFilter Action:= xlFilterCopy,'。我應該以另一種方式來接近這個任務嗎? – acadie 2014-10-16 18:38:44

+0

您收到的確切錯誤是什麼?也許截圖? – 2014-10-16 18:53:18

+0

得到「編譯錯誤:語法錯誤」 – acadie 2014-10-16 19:02:55

相關問題