Документация MSDN для Worksheet.Paste состояний относительно необязательного параметра Destination :
Объект Range, который указывает, куда следует вставить содержимое буфера обмена. Если этот аргумент опущен, используется текущий выбор.
Поскольку текущий выбор находится на другом листе, релевантна только его адресная часть, согласно разделу примечаний на той же странице:
Если вы не указали аргумент Destination, вы должны выбрать диапазон назначения, прежде чем использовать этот метод.
Этот метод может изменить выбор листа в зависимости от содержимого буфера обмена.
Так что ваш вопрос полностью сводится к тому, как Worksheet.Paste имеет дело с параметром Destination когда он опущен, а буфер обмена содержит объект Range .
Теперь, как говорилось в других ответах, неквалифицированный вызов Range неявно ссылается на ActiveSheet , поэтому ваш буфер обмена содержит ActiveSheet.Range("A1") после копирования:
Range("a1").Copy
Когда вы Paste , вы определяете место назначения - неявно; место назначения должно быть на том рабочем листе, на который ссылается Worksheets(2) , потому что это то, что вы называете .Paste против, и вы не указали параметр Destination.
Учти это:
Sheet1.Range("A1") = "test"
Sheet1.Range("A1").Copy
Sheet3.Paste 'destination is [Sheet3!A1]
Sheet3.Paste Sheet1.Range("A2") 'destination is [Sheet1!A2]
Поэтому, когда Destination , не имеет значения, с каким листом вы квалифицировали вызов Paste . Ты спрашиваешь:
Есть ли способ получить или изменить этот "выбор"?
Да: укажите значение для параметра Destination !