объект.Cells(номер_строки, номер_столбпа);
объект. Cells (номер_строки);
объект. Cells.
Проиллюстрируем на примерах особенности применения свойства Cells. Вначале в ячейку Al листа Лист1 введем значение 9. В данном случае используется первый синтаксис, где аргументами являются номер строки (от 1 до 65536) и номер столбца (от 1 до 256):
Worksheets("Лист1").Cells(1, 1) = 9
Ниже приведен пример, в котором значение 7 вводится в ячейку D3 (т.е. пересечение
строки 3, столбца 4) активного рабочего листа:
ActiveSheet.Cells(3, 4) = 7
Можно также использовать свойство Cells объекта Range. При этом объект Range, который возвращается свойством Cells, задается относительно левой верхней ячейки диапазона Range, на который мы ссылаемся. . Следующая инструкция вводит значение 5 в активную ячейку. Помните, что в данном случае активная ячейка рассматривается как ячейка Al на рабочем листе:
ActiveCell.Cells(1,1) = 5
Это удобно, когда речь пойдет о переменных и циклах . В большинстве
случаев в аргументах не будет использоваться фактическое значение. Вместо него используется переменная.
Чтобы ввести значение 5 в ячейку, которая находится под активной, можно обратитесь к такой инструкции:
ActiveCell.Cells(2, 1) = 5
Предыдущий пример можно описать так-- необходимо начать с активной ячейки, рассматривая ее как ячейку Al. Затем обратиться к ячейке во второй строке и первом столбце.
Этот синтаксис можно использовать и с объектом Range. В таком случае будет получена ячейка по отношению к указанному объекту Range. Например, если объект Range — это диапазон Al: D10 (40 ячеек), то свойство Cells может иметь аргумент от I до 40 и возвращать одну из ячеек объекта Range. В следующем примере значение 2000 вводится в ячейку А2, так как А2 является пятой ячейкой (считая сверху направо, затем вниз) в указанном диапазоне:
Range("Al:D10").Cells(5) = 2000
В предыдущем примере аргумент свойства Cells не ограничен значениями между 1 и 40. Если аргумент превышает количество ячеек в диапазоне, счет продолжается, будто диапазон больше, чем он есть на самом деле, Следовательно, оператор, подобный предыдущему, может изменить значение ячейки, которая находится за пределами указанного диапазона A l : D10.
Третий синтаксис свойства Cells возвращает все ячейки на указанном рабочем листе.
В отличие от двух других, в этом синтаксисе, получаемые в результате данные — не одна ячейка, а целый диапазон. В приведенном ниже примере использован метод ClearContents по отношению к диапазону, полученному с помощью свойства Cells для активного рабочего листа. В результате будет удалено содержимое каждой ячейки на рабочем листе:
ActiveSheet.Cells.ClearContents
Свойство Offset
Свойство Offset (подобно свойствам Range и Cells) также возвращает объект Range.
В отличие от рассмотренных выше свойств, Offset применяется только к объекту Range и ни к какому другому. Данное свойство использует единственный синтаксис:
объект.Offset(сдвиг_строки, сдвиг_столбца)
Два аргумента свойства Offset соответствуют смешению относительно левой верхней ячейки указанного диапазона Range. Эти аргументы могут быть положительными (сдвиг вниз или вправо), отрицательными (вверх или влево) или нулевыми. В приведенном ниже примере значение 12 вводится в ячейку, которая находится под активной ячейкой:
ActiveCell.Offset(l,0).Value = 12
В следующем примере значение 15 вводится в ячейку над активной ячейкой:
ActiveCell.Offset(-l,0).Value = 15
Если активная ячейка находится в строке 1, то свойство Ofset в предыдущем примере выдает ошибку, так как оно не возвращает несуществующий объект Range.
Свойство Offset особо эффективно при использовании переменных в цикле.
В процессе записи макроса в относительном режиме указания ссылки Excel использует свойство Offset для обращения к ячейкам относительно начальной позиции (т.е. активной в момент начала записи макроса ячейки). Например, для генерации следующего кода использована функция записи макросов. Вначале запишем макрос (при активной ячейке В1), потом
введем значение в ячейки В1: ВЗ, а затем вновь вернемся к ячейке В1:
Sub Macrol()
ActiveCell.FormulaRlCl = "1"
ActiveCell.Offset(1, 0) .Range ("Al") .Select
ActiveCell.FormulaRlCl = "2"
ActiveCell.Offset(1, 0} .Range ("Al") .Select
ActiveCell.FormulaRlCl = "3"
ActiveCell.Offset(-2, 0).Range("Al").Select
End Sub
При записи макросов используется свойство FormulaRlCl. Как правило, для ввода значения в ячейку применяется свойство Value. Однако при использовании FormulaRlCl или Formula результат будет таким же.
Также обратите внимание, что полученный код ссылается на ячейку Al, что довольно
странно, так как эта ячейка даже не была задействована в макросе. Данная особенность процедуры записи макросов делает программу даже более сложной, чем необходимо. Вы можете удалить все ссылки на Range ( "А1" ), и макрос все равно будет работать нормально:
Sub Modified Macro1( )
ActiveCell.FormulaRlCl = "1"
ActiveCell.Offset(1, 0) .Select
ActiveCell.FormulaRlCl = "2"
A c t i v e C e l l . O f f s e t (1 , 0 ) . S e l e c t
ActiveCell.FormulaRlCl = "3"
A c t i v e C e l l . O £ f s e t ( - 2 , 0 ) . S e l e c t
End Sub
Вы можете получить еще более эффективную версию макроса (например ту, которую я
написал вручную), где вообще не выполняется выделение:
Sub Macrol ()
ActiveCell = 1
ActiveCell.Offset(1. 0) = 2
ActiveCell.Offset(-2, 0) = 3
End Sub
Используйте запись действий
Несомненно, лучший способ познакомиться с VBA— включить функцию записи макросов и записать отдельные действия, выполненные в Excel. Это быстрый метод узнать, какие объекты, свойства и методы относятся к конкретной задаче. Будет лучше, если при записи отображается окно модуля VBA, в котором представлен записываемый код.
Используйте электронную справочную систему
Основной источник подробной информации об объектах, методах и процедурах Excel — это электронная справочная система.
Используйте броузер объектов
Окно Object Browser (Броузер объектов)— это удобный инструмент, предоставляющий список всех свойств и методов для всех доступных объектов. В VBE окно Object Browser можно отобразить одним из трех способов.
• Нажать <F2>.
• Выбрать в строке меню команду View - Object Browser.
• Щелкнуть на кнопке Object Browser на стандартной панели инструментов.
Броузер объектов — полный справочный ресурс
Выпадающий список в левом верхнем углу окна Object Browser содержит список всех библиотек объектов, к которым у вас есть доступ,
• Собственно Excel.
• MSForms (используется для создания специальных диалоговых окон).
• Office (объекты, общие для всех приложений Microsoft Office).
• S t d o l e (объекты автоматизации OLE).
• VBA.
• Все открытые рабочие книги (каждая книга считается библиотекой объектов, так как содержит объекты).
Ваш выбор в этом списке определяет, что отображается в окне Classes (Классы), а выбор в окне Classes обусловит появление определенных компонентов в окне Members of (Включены в).
После выбора библиотеки можно осуществить поиск конкретной строки текста, чтобs получить список свойств и методов, содержащих данный текст. Это можно сделать, введя текст во втором раскрывающемся списке и щелкнув на значке с изображением бинокля.
Предположим, что выработаете над проектом, обрабатывающим примечания в ячейках. 1. Выберите интересующую вас библиотеку. Если вы не уверены, какую именно библиотеку выбрать, укажите вариант <All Libraries>.
2. Введите Comment в выпадающем списке под списком библиотек.
3. Щелкните на значке в виде бинокля, чтобы начать поиск текста.
В окне Search Results (Результаты поиска) отображается текст, соответствующий фрагменту для поиска. Выберите один объект, чтобы отобразить его классы в окне Classes. Укажите класс, чтобы отобразить его члены (свойства, методы и константы). Обратите внимание на нижнюю часть окна, где дается дополнительная информация об объекте. Вы можете нажать <F1>, чтобы перейти непосредственно к необходимому разделу справочной системы.
Система Object Browser может сначала показаться сложной, но, изучив ее вы убедитесь в ее незаменимости.
Экспериментируйте с окном Immediate
Как было отмечено во врезке в одном из предыдущих разделов этой главы, окно Immediate в VBE используется для тестирования операторов и проверки разных выражений
VBA. Рекомендуется отображать окно Immediate, так как оно часто используется для про-
верки выражений и при отладке кода.
1.2.2 Примеры на использование VBA в среде Excel
Объектная модель
Объектная модель MS Excel представляет собой иерархию объектов, подчиненных одному объекту Application, который соответствует самому приложению Excel. Многие из этих объектов собраны в библиотеке объектов Excel, но некоторые из них, например, объект Assistant, входят в библиотеку объектов Office, которая является общей для всех офисных приложений.
Объект Application
Объект Application — это главный (корневой) объект в иерархии объектов MS Excel, представляющий само приложение MS Excel. Он имеет огромное число свойств и методов, которые позволяют установить общие параметры приложения MS Excel.
Свойства объекта Application
Объект Application, благодаря обширной коллекции свойств, позволяет программно установить значения многих опций окна Параметры, отображаемого при выборе команды Сервис - Параметры. Кроме того, он обеспечивает доступ к объектам верхнего уровня типа ActiveCell, ActiveSheet и т.д. Перечислим основные свойства этого объекта:
ActiveCell ActiveChart
AcfcivePrinter ActiveSheet
ActiveWorkBook AddIns
CellDragAndDrop Charts
Cursor DefaultFilePath
DefaultWebOptions DisplayAlerts
DisplayFormulaBar DisplayScrollBars
EditDirectlylnCell FileSearch
Height LibraryPath
MemoryTotal Names
Organ i zat ionName ProductCode
Referencestyle Selection
StatusBar Top
UsableWidth Version
Windows WorksheetFunction
Семейство встроенных диалоговых окон
Свойство Dialogs возвращает семейство всех встроенных диалоговых окон. Параметр этого семейства идентифицирует ОКНО, метод Show отображает его на экране, а параметры этого метода задают параметры, специфицируемые в отображаемом окне. Метод show возвращает значение True, если задача, поставленная в отображаемом окне, была выполнена успешно. Например, следующий код (листинг 2) отображает окно Открытие документа для открытия книги C:\test.xls.