Ниже приведен код, основанный на моей интерпретации того, что вы пытаетесь сделать. Вам не нужно выбирать ячейки для работы с ними, и 99,9% времени вам действительно не следует.
Dim StartRow As Long
StartRow = 3
With Sheets("Sheet1")
LastRow = .Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
.Rows(StartRow & ":" & LastRow - 1).Delete
End With
With Sheets("Sheet2")
LastRow = .Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
.Rows(1).Resize(LastRow).Copy
.Rows(1).Resize(LastRow).Insert Shift:=xlDown
.Rows("1:2").Delete
.Range("A" & Rows.Count).End(xlUp).EntireRow.Delete Shift:=xlUp
End With
Также при измерении переменных вы должны измерять, как это:
Dim StartRow as long, Lastrow2 as long, NuRow As Long
В вашем исходном коде, поскольку вы только измеряли размер последней переменной, startrow и lastrow2 будут вариантами данных, а не long.