Попробуйте это:
Dim lastrow As Long, erow As Long ' Note that in your original code, "As Long" only applied to erow: NOT to lastrow. You need to specify "As..." for each variable individually, otherwise the rest are "As Variant" by default
lastrow = Worksheets("sheet 2").Cells(Rows.Count, 1).End(xlUp).Row
Dim CopyColumn1 as Range, CopyColumn3 As Range
With Worksheets("sheet 1")
Set CopyColumn1 = .Range(.Cells(2, 1), .Cells(lastrow, 1))
Set CopyColumn3 = .Range(.Cells(2, 3), .Cells(lastrow, 3))
End With
With Worksheets("sheet2")
.Range(.Cells(2, 1), .Cells(lastrow, 1)) = CopyColumn1
.Range(.Cells(2, 3), .Cells(lastrow, 3)) = CopyColumn3
End With