Как правило, вам следует избегать использования .Acitvate
и .Select
, как описано здесь . В вашем коде вы можете полностью исключить эти части. Это и неквалифицированные диапазоны (как указано в комментариях), скорее всего, являются причиной ваших проблем. Вот ваш исправленный код:
Option Explicit
Sub CopyPasteLoop()
Dim X As Long
Dim Y As Long
Dim Col As Long
Dim row1 As Long
'Dim A As Long
Col = 1
'For A = 1 To 10000
row1 = Sheets("Copy").Cells(Rows.Count, Col).End(xlUp).Row
X = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
'Y = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
Sheet1.Range(Sheet1.Cells(2, Col), Sheet1.Cells(row1, Col)).Copy Sheet2.Range("A" & X)
'X = X + 1
'Next X
End Sub
Обратите внимание, что закомментированный цикл For
не будет работать. Поскольку из вашего вопроса непонятно, чего должен достичь этот цикл, я не могу исправить это тем, что именно вы пытаетесь сделать. В общем, вам не нужно X = X + 1
внутри цикла For
(он пропускает каждое второе целое число таким образом), поскольку об этом заботится оператор For ... To
.