Основы офисного программирования и язык VBA

       

Активные объекты и метод Activate


Объект Selection является примером косвенной адресации. Он задает некоторую выделенную область, и его свойства и методы позволяют изменять состояние этой области. Другой пример косвенной адресации - активные элементы. Как в подокне может быть только один выделенный элемент, так и активный элемент может быть единственным в своем классе - одно активное окно, один активный документ или рабочий лист. Обычно активный элемент находится в фокусе клавиатуры, именно ему направлен ввод пользователя. Сделав активным новый элемент, мы отменяем, деактивируем элемент, ранее находившийся в фокусе клавиатуры.

Метод Activate делает активным элемент, его вызвавший. Этим методом обладают элементы верхних уровней иерархии: Application, Window, Pane, Document, WorkBook, Worksheet, Chart и др. В приложениях Word и PowerPoint эти объекты обладают также булевым свойством Active, имеющим статус "только для чтения". При активизации объекта свойство Active получает значение True, при деактивации - False. Значение свойства позволяет понять, в каком состоянии находится тот или иной объект этих приложений.

Чтобы обратиться к выделенному объекту, достаточно иметь одно глобальное свойство Selection, поскольку в каждый текущий момент существует только один выделенный элемент. Активных элементов одновременно существует несколько, по одному в каждом классе. Поэтому для обращения к активному элементу надо указывать его класс. Поэтому для каждого класса имеется свое глобальное свойство. Чтобы обратиться к активному элементу некоторого класса Z, нужно вызвать соответствующее глобальное свойство ActiveZ, например ActiveDocument или ActiveWindow. В наших примерах мы неоднократно уже использовали обращение к активному документу - ActiveDocument. Рассмотрим еще один пример, в котором пользователь в приложении Excel выбирает рабочий лист. В зависимости от его выбора активизируется указанный лист, и в двух первых ячейках появляется приветствие, текст которого также зависит от выбора пользователя:

Public Sub Actis() Dim Answer As Integer Answer = InputBox(Prompt:="Выберите номер страницы для Вашей работы(1/2/3)", _ Default:=1) 'Активизирует рабочий лист, выбранный пользователем ActiveWorkbook.Sheets(Answer).Activate 'Работа с активным листом ActiveSheet.Cells(1, 1) = "Привет," Select Case Answer Case 1: ActiveSheet.Cells(1, 2) = "Михаил!" Case 2: ActiveSheet.Cells(1, 2) = "Владимир!" Case Else: ActiveSheet.Cells(1, 2) = "Люди!" End Select End Sub

На этом мы заканчиваем первое знакомство с общеупотребительными объектами Office 2000. В заключение мы хотим рассказать уже не о каких-либо конкретных объектах, а об удивительном программном средстве, позволяющем работать с ними. Речь пойдет о Macrorecorder.


Объект Selection является примером косвенной адресации. Он задает некоторую выделенную область, и его свойства и методы позволяют изменять состояние этой области. Другой пример косвенной адресации - активные элементы. Как в подокне может быть только один выделенный элемент, так и активный элемент может быть единственным в своем классе - одно активное окно, один активный документ или рабочий лист. Обычно активный элемент находится в фокусе клавиатуры, именно ему направлен ввод пользователя. Сделав активным новый элемент, мы отменяем, деактивируем элемент, ранее находившийся в фокусе клавиатуры.

Метод Activate делает активным элемент, его вызвавший. Этим методом обладают элементы верхних уровней иерархии: Application, Window, Pane, Document, WorkBook, Worksheet, Chart и др. В приложениях Word и PowerPoint эти объекты обладают также булевым свойством Active, имеющим статус "только для чтения". При активизации объекта свойство Active получает значение True, при деактивации - False. Значение свойства позволяет понять, в каком состоянии находится тот или иной объект этих приложений.

Чтобы обратиться к выделенному объекту, достаточно иметь одно глобальное свойство Selection, поскольку в каждый текущий момент существует только один выделенный элемент. Активных элементов одновременно существует несколько, по одному в каждом классе. Поэтому для обращения к активному элементу надо указывать его класс. Поэтому для каждого класса имеется свое глобальное свойство. Чтобы обратиться к активному элементу некоторого класса Z, нужно вызвать соответствующее глобальное свойство ActiveZ, например ActiveDocument или ActiveWindow. В наших примерах мы неоднократно уже использовали обращение к активному документу - ActiveDocument. Рассмотрим еще один пример, в котором пользователь в приложении Excel выбирает рабочий лист. В зависимости от его выбора активизируется указанный лист, и в двух первых ячейках появляется приветствие, текст которого также зависит от выбора пользователя:

Public Sub Actis() Dim Answer As Integer Answer = InputBox(Prompt:="Выберите номер страницы для Вашей работы(1/2/3)", _ Default:=1) 'Активизирует рабочий лист, выбранный пользователем ActiveWorkbook.Sheets(Answer).Activate 'Работа с активным листом ActiveSheet.Cells(1, 1) = "Привет," Select Case Answer Case 1: ActiveSheet.Cells(1, 2) = "Михаил!" Case 2: ActiveSheet.Cells(1, 2) = "Владимир!" Case Else: ActiveSheet.Cells(1, 2) = "Люди!" End Select End Sub

На этом мы заканчиваем первое знакомство с общеупотребительными объектами Office 2000. В заключение мы хотим рассказать уже не о каких-либо конкретных объектах, а об удивительном программном средстве, позволяющем работать с ними. Речь пойдет о Macrorecorder.



Содержание раздела