Вы получаете этот диалог из-за неявного «полезного» члена по умолчанию. В обозревателе объектов перейдите к Коллекции на панели классов, и в элементах вы увидите, что Элемент является элементом по умолчанию, обозначенным значком чирок.
Вот еще один пример. Спросите себя, что он напечатает, и произнесите это вслух, прежде чем запускать код.
Public Sub DontWrapIt()
Dim foo As Range
Set foo = Sheet1.Range("A1")
GiveMeARange foo
GiveMeARange (foo)
End Sub
Private Sub GiveMeARange(ByVal param As Variant)
Debug.Print TypeName(param)
End Sub
Обтекание объекта круглыми скобками приводит к его оценке, что вызывает неявный вызов «полезного» члена по умолчанию ... Для которого требуется параметр Index
, который не указан - следовательно, «параметр не является обязательным».