Excel vba Установить динамический диапазон для копирования после автоматического фильтра - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь обновить лист ("EditEx") данными из регистрационного листа ("TK_Register") после применения фильтра на основе ссылочного номера. Там будет не более 20 строк.

Моя проблема связана с копированием и вставкой.

Если данные для копирования находятся в первых 20 строках, они копируют и вставляют данные. но также копирует пустые строки до строки 21 (как установлено в моем диапазоне DBExtract).

Если данные, подлежащие копированию, идут после первых 20 строк, я получаю ошибку 1004. Фильтр обнаруживает, что есть данные, однако мой код копирования просматривает только первые 20 строк.

Как можно, чтобы строки, отфильтрованные при копировании, работали динамически, БЕЗ копирования также пустых строк (что также происходит, если я установил свойдиапазон копирования должен быть "A: K")? Спасибо

    Sub UpdateInputWithExisting()

    ActiveCell.Offset(0, 1).Select
    Set RefID = ActiveCell

    Sheets("TK_Register").Range("A1:N1000").AutoFilter field:=12, Criteria1:=RefID

    Dim DbExtract, DuplicateRecords As Worksheet
    Set DbExtract = ThisWorkbook.Sheets("TK_Register")
    Set DuplicateRecords = ThisWorkbook.Sheets("EditEx")

    DbExtract.Range("A2:K21").SpecialCells(xlCellTypeVisible).copy
    DuplicateRecords.Cells(32, 3).PasteSpecial xlPasteValues
    On Error Resume Next
    Sheets("TK_Register").ShowAllData
    On Error GoTo 0

    ActiveWorkbook.RefreshAll
    Sheets("EditEx").Select
    Range("B13").Select

    MsgBox ("Record Retrieved. Make your changes and ensure you click 'Save Changes' to update the Master Registers")

    End Sub

1 Ответ

0 голосов
/ 04 ноября 2019

Я бы порекомендовал вам изменить следующие две строки на (учитывая, что на вашем листе нет смежных данных с вашей таблицей):

Sheets("TK_Register").Range("A1").CurrentRegion.AutoFilter field:=12, Criteria1:=RefID 

И это:

DbExtract.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).copy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...