这看起来像是一个简单的任务,但我仍然遇到各种错误。我需要过滤工作表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