Вам необходимо указать каждый Диапазон, строки, столбцы и т. Д. С помощью рабочего листа:
FrstEmtCll = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Row
Вторая проблема заключается в том, что вы объявляете Dim FrstEmptCll As Range
, но пытаетесь поставитьномер строки в объекте диапазона .End(xlUp).Row
.
Так что либо Set
диапазон до ячейки и смещение:
Option Explicit
Sub Entry_Schedule()
' Entry_Schedule Macro
Dim FrstEmtCll As Range
Set FrstEmtCll = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Offset(RowOffset:=1)
Worksheets("Sheet2").Range("D4:I4").Copy
FrstEmtCll.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Или используйте номер строки (как Long
):
Option Explicit
Sub Entry_Schedule()
' Entry_Schedule Macro
Dim FrstEmptRow As Long
FrstEmptRow = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Row + 1
Worksheets("Sheet2").Range("D4:I4").Copy
Worksheets("Data").Range("A" & FrstEmptRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Кроме того, вы неправильно набрали имя своей переменной FrstEmptCll
против FrstEmtCll
(отсутствует p
).Это означает, что у вас сейчас есть две разные переменные (что легко взрывает ваш код).Чтобы избежать таких ошибок, я настоятельно рекомендую активировать Option Explicit
: в редакторе VBA перейдите на Инструменты › Параметры › Требуется объявление переменных .