這看起來像是一個簡單的任務,但我仍然遇到各種錯誤。我需要過濾工作表B,然後複製一列數據。然後我需要過濾工作表A,然後將複製的數據粘貼到列中。如何將範圍粘貼到帶有過濾器的其他工作表上
Worksheets("SheetB").Select
lastRowOne = Range("B" & Rows.Count).End(xlUp).Row
Range("DL2:DL" & lastRowOne).AutoFilter Field:=116, Criteria1:="<>Apples"
lastRowTwo = Range("B" & Rows.Count).End(xlUp).Row
Range("DG2:DG" & lastRowTwo).AutoFilter Field:=111, Criteria1:=Target
'Target is already defined earlier in the Macro and functions fine
lastRowThree = Range("B" & Rows.Count).End(xlUp).Row
Range("DX2:DX" & lastRowThree).Copy
Worksheets("SheetA").Activate
lastRowFour = Range("B" & Rows.Count).End(xlUp).Row
Range("A2:A" & lastRowFour).AutoFilter Field:=1, Criteria1:=Target
lastRowFive = Range("B" & Rows.Count).End(xlUp).Row
Range("Z2:Z" & lastRowFive).SpecialCells(xlCellTypeVisible).Select
Selection.PasteSpecial Paste:=xlPasteRange, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
代替最後一行的我也嘗試:
ActiveSheet.Paste
第一返回「運行時錯誤‘1004’: 範圍類的PasteSpecial方法失敗
的ActiveSheet.Paste返回「運行時錯誤'1004': 工作表類錯誤的粘貼方法
儘管此代碼不是最乾淨的,除了「粘貼」到Z欄中的「sheetA」上外,它的所有功能都是起作用的。如果可以將其粘貼到AA中,則還需要粘貼到AA中的數據。
謝謝!
我有一個預感,這是由於您使用'.Select' /'.Activate'。使用這些不是最佳實踐 - 你想[避免使用'.Select' /'.Activate'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel- vba-macros),你可以看到它可以拋出一些錯誤。我***高度建議閱讀該頁面,並應用它。如果您仍然有錯誤,請告訴我們。特別是在切換紙張時,使用'.Activate'可能會失敗。 – BruceWayne
@BruceWayne謝謝 - 我改變了我的宏使用: 'lastRow = Range(「B」&Rows.Count).End(xlUp).Row' 'Dim Adjustment As Range' 'Set Adjustment = Worksheets (「Sheet」)。範圍(「DX2:DX」和lastRow)' 然後激活並過濾Sheet A然後這個代碼: 'Range(「Z2:Z」&lastRowTwelve).SpecialCells(xlCellTypeVisible).Value = Adjustment .Value' 這個「粘貼」在正確的列,但被「複製」的數據是不正確的。它忽略了SheetB上的過濾器(在我原來的代碼中,它被正確複製。任何建議? 我繼續嘗試清理.activate和.selection! – RugsKid
我改爲: 'Set Adjustment = Worksheets(「YTD Promo評論「)。範圍(」DX2:DX「和lastRowTen).SpecialCells(xlCellTypeVisible)' 這導致了四個正確的行將」粘貼「到Z列中的SheetA。但是前四個下面的其餘行不是他們說#N/A – RugsKid