ThisWorkbook.Sheets("Cars").Range("B5").Paste
Коллекция Sheets
возвращает Object
, что означает, что все, что связано с ней, будет вызовом с поздним связыванием, разрешенным во время выполнения. Это также означает, что IntelliSense не может вам здесь помочь, поскольку во время компиляции нет сведений о том, какой именно тип используется.
Объявить переменную объекта Range
:
Dim target As Range
Затем назначьте его:
Set target = ThisWorkbook.Worksheets("Cars").Range("B5")
Если лист "Cars"
существует во время компиляции, присвойте ему кодовое имя и используйте его вместо разыменования объекта из коллекции Worksheets
(используйте Worksheets
, когда вы хотите потяните Worksheet
; коллекция Sheets
содержит много типов листов, не относящихся к листам):
Set target = CarsSheet.Range("B5")
Теперь вы получаете IntelliSense при вводе этой точки:
target.
А потом сделать вызов участника, которого не существует, гораздо сложнее:

Тем не менее, , как GSerg уже упоминал , что вы действительно должны здесь сделать, это указать целевой диапазон для метода Copy
в качестве параметра.