2014-12-17 2 views
3

Я новичок в VBA. В редакторе Excel 2010 есть возможность автозаполнения, нажав CTRL + Space.Автозаполнение в Excel 2010 Редактор VBA

Но иногда это не работает. Например, когда я печатаю «ActiveSheet». Я не могу исследовать возможные методы и переменный объект имеет ..

Но когда я печатаю:

Set sheet = Workbooks.Open(file, True, True) 
sheet. 

и нажмите CTRL + Space можно увидеть все возможности ..

Спасибо за ваша помощь!

+0

Попробуйте искать [здесь.] (Http://stackoverflow.com/questions/25796920/vba-excel-what-methods-attributes-can-i-use-with-activesheet) – TheEngineer

+0

http: //www.pcreview .co.uk/forums/why-no-intellisense-activesheet-t4031852.html – chancea

+0

все в порядке, я прав, что нет возможности автозаполнения, потому что компьютер не знает, какой тип ActiveSheet действительно есть? – mrbela

ответ

3

VBA предоставляет только свойства и методы, если в типе данных нет двусмысленности. ActiveSheet может представлять собой объект Worksheet, макросчет и, возможно, пару других вещей, которые я не помню.

Если вы перейдете в Обозреватель объектов (F2) и найдите либо ActiveSheet, либо свойство Item класса Sheets, вы увидите, что они возвращают тип данных объекта. Объект - это общий тип данных, который может содержать любой объект (вроде как Variant). Поскольку VBA не знает, какой объект стоит за объектом, он не может предоставить вам список свойств и методов.

Вы не получите этот список, используя Set sheet = ..., вы его получите, потому что ранее в вашем коде вы объявили sheet в качестве листа (возможно). Хотя Sheet.Item (и Activesheet) возвращает объект, нет двусмысленности, когда вы объявляете что-то в качестве листа.

+0

Большое спасибо! – mrbela

Смежные вопросы