Я заметил в вашем коде, что вы не ссылались на лист Range("O3:O44")
. Поэтому, когда вы запустите код, он выберет и скопирует Range("O3:O44")
активного листа.
Чтобы избежать этой путаницы, избегайте максимально возможного использования .Select
и .Activate
, особенно при работе с несколькими листы. При ссылках на диапазоны всегда включайте лист, на который вы нацеливаетесь.
Поэтому вместо:
Range("O3:O44").Select
Selection.Copy
Сделайте это так:
Worksheets("Sheet1").Range("O3:O44").Copy
Теперь, чтобы ответить на ваш проблема, вам нужно указать, из какого листа Range("O3:O44")
. Затем переместите этот код в строку непосредственно перед вставкой.
'range to copy with sheet reference
Worksheets("Sheet1").Range("O3:O44").Copy
'range where previous range will be pasted, also with sheet reference
Worksheets("Sheet2").Range("A" & nStart & ":AP" & nEnd).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Попробовав свой код, вы решите возникшую ошибку.