Добавьте строки перед вставкой данных в новый лист (между указанными c ячейками) - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть лист с данными, и я хочу скопировать его данные на другой лист. Это просто, но проблема в том, что мне нужно скопировать этот выбор в диапазон между двумя установленными ячейками, поэтому, если я добавлю еще одну строку с данными на первом листе, то при выполнении макроса данные перезапишут ячейки ниже предел. Как сделать так, чтобы, если я добавлю строку на первом листе, перед тем, как макрос вставит данные на другом листе, будет создана другая строка или количество строк, чтобы избежать перезаписи нижнего предела? Например, если число строк между двумя ячейками равно 5, а диапазон, который мне нужно вставить, равен 7, то перед вставкой данных макрос создает еще две строки.

Спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Рассчитайте разницу и добавьте строки, если необходимо

Option Explicit
Sub CopyInsert()

    Dim rngSource As Range
    Set rngSource = Selection ' range to copy from

    Const SHEET_TARGET = "Sheet2"
    Const RNG_TARGET = "C12:C16"

    Dim wb As Workbook, wsTarget As Worksheet
    Dim rngTarget As Range, n As Long

    Set wb = ThisWorkbook
    Set wsTarget = wb.Sheets(SHEET_TARGET)
    Set rngTarget = wsTarget.Range(RNG_TARGET)

    ' insert new ones
    n = rngSource.Rows.Count - rngTarget.Rows.Count
    If n > 0 Then
        rngTarget.Rows("2:" & n + 1).EntireRow.Insert
    End If

    rngSource.Copy rngTarget.Cells(1, 1)

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...