ivanok_v2, я прочитал ссылку, если я правильно понял, там пишут код в vba Access'a и оттуда работают с Excel'ем. Если это так, то ИМХО логично и правильно то, что VBA Access не даст напрямую увидеть методы листа Excel'я
Но я то работаю в vba Excel'я
Набираю:
Код
Workbooks(1). - выходит список методов
Range(...). - выходит список методов
Cells(...).- выходит список методов
А вот набираю:
Код
activesheet. - НЕ выходит список методов
worksheets(1). - НЕ выходит список методов
sheets(1). - НЕ выходит список методов
Почему так? Ведь worksheet/sheet - это чуть ли не самый главный объект в VBA Excel'я
Бахтиёр написал: Cells(...).- выходит список методов
Серьёзно Cells(2, 3) после точки выводится список методов? Можете привести пример этого чуда?
Цитата
Бахтиёр написал: activesheet. - НЕ выходит список методов
А с чего бы должен выводиться - это может быть и ChartSheet и DialogSheet и Worksheet. Какие методы должны отображаться на этапе ввода кода, как IDE должен догадаться?
Если честно, то и мне непонятно, почему разработчики так сделали. Согласно документации, конструкция Worksheets.Item(Index) должна возвращать объект Worksheet, фактически (можно посмотреть в Object Browser) возвращает Object. Может быть, наследие старых версий Excel. Возможно, корифеи ответят точнее.
sokol92 написал: ...наследие старых версий Excel...
Владимир, добрый вечер. Скорее, наследование интерфейсов классов. Если в Object Browser сравнить состав классов Sheets и Worksheets, то нет разницы в типах возвращаемых объектов для Add, Add2, Item, _Default. Так как Sheets бывают разных типов, и в него могут входить, в том числе, и объекты Worsheet-типа, то там везде объекты As Object. А класс Worksheets, очевидно, просто наследует интерфейсы класса Sheets.
Что касается объекта Cells, то полное определение же Range.Cells As Range. А объект Range бывает сборищем не только части ячеек, но и полных строк/столбцов (см. Range.Columns As Range, Range.Rows As Range), которые по разному прогоняются по For-Each, поэтому Range.Item(...) и определено универсально как As Variant, но могло быть, наверное, и As Object, что также исключает IntelliSense. Для наглядности: ?Range("A:D").Columns.Item(1).Address $A:$A ?Range("A:D").Rows.Item(1).Address $A$1:$D$1 ?Range("A:D").Item(1).Address $A$1
ZVI написал: А класс Worksheets, очевидно, просто наследует интерфейсы класса Sheets.
А, по-моему, здесь даже не наследование, а тип. В Object Browser для Workbook свойство Worksheets показано As Sheets, во всяком случае в XP. Так что, вероятно