Excel VBA Копирование и вставка в последнюю строку - PullRequest
0 голосов
/ 04 июля 2018

Полный новичок в Excel VBA здесь. Я хочу иметь возможность копировать и вставлять порцию информации из одной ячейки в одной строке в ячейки в другой строке. Например, кусок информации из строки «A» в строку «F». Однако я хочу иметь возможность сделать это несколько раз, даже после того, как я уже запустил макрос один раз, и я хочу, чтобы информация вставлялась ниже последней использованной ячейки строки «F», поэтому список можно продолжить. Я хочу вставить информацию без строк между каждым столбцом при многократном запуске макроса, но я хочу, чтобы он начинался с определенного столбца. Однако я не могу этого сделать.

Вот мой код:

Sub pastebelowlastcell()
Dim lRow As Long
Dim LastRow As Long
lRow = Sheets("Sheet1").Cells(Rows.Count,"A").End(xlUp).Row
lRow = lRow + 1
LastRow = Sheets("Sheet1").Cells(Rows.Count,"F").End(xlUp).Row
LastRow = LastRow + 1
ActiveSheet.Range("A1:C" & lRow).Copy
ActiveSheet.Range("F" & LastRow).PasteSpecial
Application.CutCopyMode = False
End sub

Например, я хочу вставить код, начинающийся с «F10», но если я изменю свой код на:

LastRow = Sheets("Sheet1").Cells(Rows.Count,"F").End(xlUp).Row
LastRow = LastRow + 9

Он будет вставляться, начиная с "F10", но вставляется с 8 пустыми строками между ними при каждой вставке, когда я запускаю код несколько раз.

Кроме того, можно ли с помощью этого метода вставлять информацию из отдельных ячеек в объединенные ячейки?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Попробуйте изменить строку LastRow на

LastRow = WorksheetFunction.Max(Sheets("Sheet1").Cells(Rows.Count, "F").End(xlUp).Row, 9)

При запуске ему будет присвоено значение 9 (до того, как вы добавите 1), и впредь он найдет последнюю использованную строку.

0 голосов
/ 04 июля 2018

Предполагая, что вы начинаете копирование из строки 1 столбца A, попробуйте следующее:

Sub pastebelowlastcell()

Dim FirstRow, ALastRow, FLastRow As Long

t = 1
ALastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

    Do Until t = ALastRow

        ActiveSheet.Range("A" & t & ":C" & t).Copy

        FLastRow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
        If t = 1 Then FLastRow = 10

        ActiveSheet.Range("F" & FLastRow).PasteSpecial Paste:=xlPasteValues

        t = t + 1

    Loop

Application.CutCopyMode = False

End Sub
...