Решено - Копирование данных из одной таблицы в другую, но очистка данных перед копированием - PullRequest
1 голос
/ 28 июня 2019

Возможно, это действительно простой, но не может понять, почему мой код не работает.

У меня есть таблица, которая автоматически фильтруется на основе цикла.Для каждого цикла мне нужно скопировать отфильтрованные данные из одной таблицы на новый лист, но в случае удаления строк необходимо очистить содержимое таблицы назначения перед копированием данных.

Я пробовалглядя на данные в режиме прерывания, но они просто не выполняют эти строки кода.

Мой текущий код работает, но я бы хотел, чтобы он был немного более полезным.

Текущий код, копирует отфильтрованный диапазон, основанный на цикле, в строку 20 на листе, названном так же, как фильтр:

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

Но мой новый код просто не выполняет строку вставки, просто пропускает ее, не бросаяошибка.

Я чувствую, что я рядом, но просто не могу понять!Любая помощь будет высоко ценится.

Рабочий код:

 On Error Resume Next

      With Sourcetable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
        With Sheets(Company_Name)

        On Error Resume Next
          .Rows(20).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone
         Application.CutCopyMode = False
       End With
    End With

Неработающий код:

  Sheets(Company_Name).Listobjects(1).ClearContents

      With Sourcetable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
        With Sheets(Company_Name)

        On Error Resume Next
          .ListObjects(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone
         Application.CutCopyMode = False
       End With
    End With

1 Ответ

0 голосов
/ 30 июня 2019

Решил это наконец, я знал, что был близок:

'Clear Existing Data in target table only and resize table to 1 row (excluding header row)

With Sheets(Company_Name).ListObjects(1)
    .DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.count - 1, .DataBodyRange.Columns.count).Rows.Delete
    .DataBodyRange.ClearContents
End With

'Define last row of Target Table (which will be first as all data cleared in previous step)

lrow = Sheets(Company_Name).Range("B" & Rows.count).End(xlUp).Row

'Copy visible data from source table to first row of target table      
With Sourcetable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
    With Sheets(Company_Name)
        .Range("A" & lrow).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone
         Application.CutCopyMode = False
    End With
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...