Автозаполнение / выпадающий список для аргументов после первой полной остановки - PullRequest
1 голос
/ 25 февраля 2020

Если я пишу аргумент в VBA, размещенном в Excel, например,

ActiveSheet.UsedRange.Select

В середине написания первой части - ActiveSheet - CTRL + ПРОБЕЛ будет автоматически завершать эту часть, или я могу выбрать доступные варианты из выпадающего списка.

Однако - раскрывающийся список Intellisense и автозаполнение не будут работать / появляться ни для чего после первой полной остановки. Например, я не могу автозаполнить свойство UsedRange.

Можно ли отобразить предложения и т. Д. c. мимо написания первой части?

1 Ответ

7 голосов
/ 25 февраля 2020

Если вы посмотрите на ActiveSheet в Обозревателе объектов (нажмите F2), вы увидите, что ActiveSheet напечатано как Object. Поэтому Intellisense не может отображать какие-либо дополнительные свойства, указывающие c для Worksheet. Ввод Object имеет смысл, поскольку активный лист может быть чем-то отличным от стандартного рабочего листа Excel, например листа диаграммы или диалогового листа.

Многие глобальные свойства строго типизированы, например, ActiveWorkbook как Workbook; Intellisense представит свойства и методы просто отлично.

enter image description here

Если вы уверены, что ActiveSheet при использовании в этом коде всегда будет ссылаться на Worksheet, вы можете присвоить его переменной Worksheet:

Dim wks As Worksheet
Set wks = ActiveSheet

Intellisense затем предоставит вам соответствующие свойства и методы объекта Worksheet для строго типизированной переменной:

enter image description here

(Теоретически объектная модель Excel могла бы набрать ActiveSheet как что-то вроде Sheet, что будет иметь все общие члены Worksheet, Chart и DialogSheet. Я не уверен, почему это не было сделано.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...