Вставка Excel vba в последнюю строку данных

#vba #excel

#vba #excel

Вопрос:

мне нужны некоторые изменения кода здесь, в команде paste на vba, но дело в том, что он будет вставлен в последнюю строку данных

я использую этот код, и это работает отлично, но когда я пытаюсь скопировать другие данные, они заменяют текущие

 Range(Range("A2:L2" amp; lastrow), ActiveCell.End(xlDown)).PasteSpecial
  

Комментарии:

1. Вам нужно посмотреть все учебные пособия Wise Owl по VBA на Youtube. Вот соответствующая вводная часть 5 для Excel VBA — Выбор ячеек (диапазон, ячейки, Activecell, конец, смещение)

Ответ №1:

измените строку как

 Range(Range("A2:L2" amp; lastrow), ActiveCell.End(xlDown)).offset(1,0).PasteSpecial
  

Ответ №2:

Попробуйте использовать .Вставить

 Sub Macro2()
    Rows("6:6").Copy
    Rows("15:15").Insert Shift:=xlDown
End Sub
  

Комментарии:

1. Вы изменили его, чтобы скопировать правильный диапазон и вставить в нужный диапазон? Возможно, вам нужен xlUp, а не xlDown? Ваш вопрос был довольно неясным относительно того, чего вы хотите достичь, и «он не работает» еще более неясен…

Ответ №3:

Прежде всего, ваша одна строка кода не очень помогает, и строка копирования тоже должна быть там…

Затем :

 Range(Range("A2:L2" amp; lastrow), ActiveCell.End(xlDown)).PasteSpecial
  

Нет необходимости выбирать диапазон ячеек, если вы скопировали диапазон для вставки, просто первую ячейку, куда вы хотите вставить!

Итак, самая важная часть — это копирование!

Ваш код должен выглядеть примерно так :

 With ThisWorkBook.Sheets("SheetToCopy")
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
        LastRow = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Row
    Else
        LastRow = 1
    End If
    .Range("A2:L" amp; LastRow).Copy
End With

With ThisWorkBook.Sheets("SheetToPaste")
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
        LastRow = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Row
    Else
        LastRow = 1
    End If
    .Range("A" amp; LastRow   1).PasteSpecial
End With