Когда точка .
не предшествует методу Cells
или Range
, это называется неквалифицированный справочник по дальности; Excel VBA автоматически переносит его на текущий активный лист.
Cells(1, 1) <==> Activesheet.Cells(1, 1)
Range("A1") <==> Activesheet.Range("A1")
Однако, это считается плохой практикой и его следует избегать, поскольку это приводит к случайным проблемам и ошибкам; поведение кода зависит от того, на каком лике, который пользователь имеет в верхней части в графическом интерфейсе Excel. Опытные разработчики всегда избегают его как можно больше и используют квалифицированные диапазоны; т.е.
Worksheets("someSheetName").Cells(1, 1)
.
«Ячейки» на самом деле являются свойством не методом, и в данном примере это свойство «Range». Итак, какой активный «диапазон»? Кажется, что нет такого, поскольку доступ к «Range» будет доступен, так как имеет смысл использовать и неквалифицированное свойство «Ячейки», если нет активного «диапазона»? – Roland
Свойства - это особый тип методов, а последний обычно используется в ООП для обозначения всех * callables * класса (VBA Sub, Function, Property и т. Д.). Во втором вопросе в вашем примере как «Range», так и «Cells» относятся к «ActiveSheet», который рассматривается как глобальная переменная * в Excel VBA. –
Понял. Тем не менее связанная документация MSN запуталась, потому что свойство «Ячейки» в фрагменте кода фактически ссылается на «ActiveSheet», а не на «Range». – Roland