#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