Это похоже на простую задачу, но я постоянно сталкиваюсь с различными ошибками. Мне нужно отфильтровать рабочий лист 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: Не удалось выполнить метод вставки класса Worksheet
Хотя этот код не самый чистый , все это работает, за исключением «вставки» на «sheetA» в столбце Z. Мне также нужны данные, вставленные в 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 Как Range' «Set Adjustment = Таблицы («Лист»). Диапазон («DX2: DX» & lastRow) ' Затем активированный и отфильтрованный лист A, затем этот код: 'Диапазон (« Z2: Z »& lastRowTwelve) .SpecialCells (xlCellTypeVisible) .Value = Adjustment .Value' Это «вставлено» в правильной колонке, но данные, которые были «скопированы», были неверными. Он игнорировал фильтры на SheetB (в моем исходном коде, который он копировал правильно. Любые предложения? Я продолжаю пытаться очистить .activate и .selection! – RugsKid
Я изменил на: 'Set Adjustment = Worksheets (« YTD Promo Обзор («DX2: DX» и lastRowTen) .SpecialCells (xlCellTypeVisible) ' Это привело к тому, что четыре правильные строки принесли« вставленные »в SheetA в столбце Z. Но остальные строки ниже четырех верхних не являются Правильно. # N/A – RugsKid