Приведенный выше комментарий верен, когда говорится, что лучше избегать использования SELECT
при копировании / вставке данных, и он предоставил вам отличную ссылку.
В любом случае, вы уже написали свой код с SELECT
поэтому я просто добавлю ваш код, чтобы он заработал.
Проблема, с которой вы столкнулись, заключается в том, что вы скопируете 2-ю строку (для i = 2 <- это 2-я строка), выберите Sheet3 в качестве «активного листа», вставьте его, но тогда вы никогда не укажете, что мынеобходимо сделать Sheet1 «активным листом» для копирования следующей строки.</p>
Вот обновленный код для копирования всех строк из Sheet1 в Sheet3
Private Sub CopyData()
Dim LastRow As Integer, i As Integer, erow As Integer
Worksheets("Sheet1").Select 'Set Active sheet to "Sheet1"
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 'Get last row
For i = 1 To LastRow 'start loop, with row 1 as first row to copy. Adjust as needed
Range(Cells(i, 1), Cells(i, 4)).Select 'select that row
Selection.Copy 'copy the row
Worksheets("Sheet3").Select 'now select the sheet where you want to paste it
ActiveSheet.Cells(i, 1).Select 'we can use i variable, this will paste it in the same row number as it were in Sheet1
ActiveSheet.Paste
Application.CutCopyMode = False
Worksheets("Sheet1").Select 'now Select Sheet1 again so you can copy the next row
Next i
End Sub