2012-12-19 115 views
4

我正在研究一個VBA腳本,它從Access中抽取一系列日期,然後過濾數據並根據過濾的數據創建圖表。過濾的數據將轉到單獨的工作表,圖表將從中抽取其數據。我可以通過SQL語句從Access中獲取數據,但是我在Excel中的AutoFilter出錯了。這是我有...在VBA中過濾和複製Excel

Sheet3.Range("F4:F500").AutoFilter(, "Riveter 01").Copy Destination:=Sheet2.Range("A5") 

它給出了一個應用程序定義或對象定義的錯誤,我不明白爲什麼。這是正確的方式還是有一個更簡單的方法?

謝謝!

PS:這個過濾器將與22臺獨特的機器發生,所以我打算爲每臺機器運行一個循環。如果這不是最快或正確的方式,請讓我知道。

回答

10

您需要將其分成兩部分。過濾然後複製/粘貼。見下文:

With Sheet3 
    .AutoFilterMode = False 
    With .Range("F4:F500") 
     .AutoFilter Field:=1, Criteria1:="Riveter 01" 
     .SpecialCells(xlCellTypeVisible).Copy Destination:=Sheet2.Range("A5") 
    End With 
End With 

刪除的過濾器:

On Error Resume Next 
    Sheet3.ShowAllData 
On Error GoTo 0 

在錯誤繼續下一步是當不存在本過濾器跳過該錯誤。請注意,對於那些尋找通用解決方案的用戶,請使用Sheet3和Sheet2。

+0

此代碼有效!我現在不確定的是a)爲什麼它從「F4」中取出單元並複製它,因爲它是不同的機器。它甚至當我改變範圍時複製「F3」。 b)如何抓取同一行中的數據(所以右邊的兩個單元格,抓住當天每臺機器啓動和運行的時間,然後複製它,而不是機器名稱。)感謝您的幫助! – Grant

+0

它需要F4,因爲它在你的範圍內。要獲取更多數據,請查看使用Range的當前區域。您將需要創建一個更詳細的新問題,因爲它無法在評論部分解決。包含數據,數據所在的行以及要複製的數據。 – InContext

+0

好的,謝謝! – Grant