В Excel 2007, в редакторе VBA, почему, когда я набираю Worksheets (1). Excel не перечисляет членов объекта листа? (и как это исправить)


0

Картина, которая объясняет вопрос:

введите описание изображения здесь

Заметки:

  • У меня есть Инструменты: Параметры: Выбран параметр «Список участников»
  • Ctrl + Пробел не работает
  • Я знаю, что могу использовать обозреватель объектов, чтобы увидеть, какие элементы я могу использовать с объектом «Рабочий лист», но было бы проще, если бы Excel показал мне список.

Ответы:


1

Это происходит потому , что Worksheetsобъект Item Свойство возвращает объект (или VB говорить тип данных Variant). Раскрывающийся список завершения кода не знает, какие методы показывать, потому что возвращаемый результат не является строго типизированным для Worksheetобъекта. Если не считать Excel, либо изменение кода для использования строго типизированной коллекции, либо эвристическое вычисление типа данных, для способа Item невозможно изменить это поведение.

Однако вы можете присвоить возвращаемый объект типизированной переменной, и завершение кода будет работать. Например:

Worksheet Sheet1 = Worksheets(1)
Sheet1.

Вы получите список завершения при вводе периода после Лист1. Это связано с тем, что возвращаемый объект теперь приводится как Worksheetтип, и Excel знает, какие методы связаны с этим типом.


Спасибо за ответ. Итак, просто чтобы уточнить (и чтобы я правильно понял), в Excel VBA нет способа отобразить или привести объект, возвращенный свойством Worksheets.Item (), чтобы возвращаемый объект был явно объектом Worksheet? (~ нет способа явно изменить тип объекта, который возвращает свойство Item).
Колемик

Ну, нет интерфейса для этого. В Visual Studio есть сторонние программы, которые улучшают функцию дополнения кода (например, мы используем Resharper). VBA использует аналогичную технологию, так что это может быть возможно для дополнения. Тем не менее, я не знаю ни одного, что делает.
Брэд Паттон

@ trismarck, засыпая прошлой ночью, я подумал о том, как получить список завершения. Я отредактировал ответ, чтобы включить его. Надеюсь, это поможет.
Брэд Паттон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.