Смекни!
smekni.com

Имитационная модель автоматизированного участка обработки деталей (стр. 7 из 9)

Основныепонятияязыка Visual Basic for Applications.

VBA является объектно-ориентированной средой, содержащей большой набор объектов, каждый из которых обладает множеством свойств и методов. Количество этих объектов может напугать новичка, но, к счастью, для того чтобы начать работать, знать их всех вовсе не обязательно. Сам объект и все инструменты, необходимые для его создания, отображения или, скажем, уничтожения, относятся к определенному классу. Имя класса указывает на тип объектов, которые он содержит. Классы можно рассматривать как основу для создания других объектов этого же типа. Поэтому все объекты одного класса, например класса TextBox, будут «действовать» одинаково. В других языках программирования вы можете сгруппировать связанные друг с другом данные и ссылаться на них, используя общее имя, предположим Employees или Рroducts, но в соответствии с объектно-ориентированной методологией класс обязательно должен включать в себя и исполняемый программный код.

Свойства и методы являются членами класса. С помощью свойств описывается, как выглядит объект, в частности дается информация о приемах форматирования текста, цвете и размере шрифта. Методы являются процедурами, или, другими словами, множеством осуществляющих определенную задачу операторов, которые могут быть выполнены для объекта (процедуры создания и удаления объекта, процедуры событий, определяющие принцип взаимодействия объекта с пользователем, и т. д.) [12].

Объекты

При объектно-ориентированном программировании практически все компоненты среды разработки являются объектами. В Excel VBA-объектом считается любой элемент приложения — ячейка, лист, рабочая книга, диаграмма. Фактически объектом является и само приложение Excel. Объекты могут включать области ячеек, рамки ячеек, окна, сценарии, стили, и этот список можно продолжить. Каждый класс объектов имеет свое множество свойств, функций и событий.

Когда вы добавляете объект на рабочий лист, создается экземпляр класса объектов, и объекту присваиваются те значения свойств, которые определены в этом классе. По умолчанию экземпляры одного и того ж класса имеют имя, которое состоит из имени родительского класса и порядкового номера. Свойства каждого экземпляра одного и того же класса инициализируются одними и теми же значениями, за исключением свойства Name. Так как VBA присваивает значения всем элементам, которые в этом нуждаются, пользователю действительно не нужно много знать, чтобы начать работать в данной среде.

Свойства

Свойство является атрибутом объекта, описывающим, как объект выглядит (его цвет, размер и местоположение) и как он действует (является ли видимым, ссылается ли на другой объект). Когда вы создаете объект, Excel выполняет процедуру создания экземпляра этого объекта. Данная процедура, хранимая в классе объектов, присваивает значения всем свойствам, что позволяет вам сразу же работать с объектом. Если вы захотите изменить несколько свойств, то обнаружите, что в большинстве своем они заданы именно так, как вам нужно, поэтому вносить изменения вам не придется. Для того чтобы в макросе VBA присвоить свойству новое значение, необходимо лишь создать оператор присваивания, в котором слева от знака равенства будут указаны имя и свойство объекта (разделенные точкой), а справа — новое значение. К примеру, указанный ниже оператор заменит присвоенное по умолчанию имя листа Sheetl именем Accounts (Счета):

SheetI.Name- "Accounts"

Свойство листа Name отображается на его ярлычке. Причем данное свойство входит также во множество других классов.

Методы

Метод — это действие, которое может быть выполнено над объектом. Методы реализуются посредством выполнения процедуры, которая является членом класса объектов. Синтаксис вызова метода таков; имя объекта и имя метода, разделенные точкой. К примеру, для того чтобы использовать метод Protect для защиты объекта Sheetl от внесения изменений, вам следует ввести такую команду:

Sheetl.Protect

События

Всякий раз, когда пользователь взаимодействует с определенным объектом на рабочем листе, совершается событие. Каждый класс объектов имеет собственную группу событий, на которые объекты данного класса реагируют. Так, рабочая книга имеет событие NewSheet, которое выполняется всякий раз, когда пользователь добавляет в нее новый лист; событие SelectionChange происходит при выборе пользователем другой ячейки или области ячеек. При создании процедуры события Excel автоматически добавляет в ее код первую и последнюю строки; при желании вы можете самостоятельно написать программу для обработки события, на которое должны реагировать объекты.

Взаимодействие объектов, свойств и методов

Когда вы создаете лист в рабочей книге, функцией-членом в классе Worksheet создается объект Worksheet. Значения свойств нового объекта присваиваются по умолчанию (например, значение свойства Name, объект стиля ссылок А1 или R1C1), и с объектом можно сразу же работать. К этому объекту можно применить любой из встроенных в класс методов, таких как Printout или Save, и создать программу реагирования на такие события, как SheetCaleulate или, скажем, Open.

Использование свойств и методов, возвращающих объекты

Если свойство или метод возвращает объект, то доступ к свойствам и методам этого объекта можно получить лишь после указания его имени. В качестве примера рассмотрим такую строку программы:

Workbooks{"Bookl").ActlveSheet.Name= "Expenses"

Метод Workbooks("Bookl").ActiveSheet возвращает объект Worksheet, который содержит активную на данный момент таблицу, находящуюся в рабочей книге Bookl. Свойство Name является свойством объекта Worksheet, а не объекта ActiveSheet. Так как лист Sheetl считается активным, то этот оператор присваивания эквивалентен следующему:

Sheetl.Name= "Expenses"

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

Свойство ActiveCel1 возвращает объект Range — одну или несколько ячеек, обращение к которым необходимо произвести одновременно. Это свойство является членом классов Application (активное приложение, в данном случае — Excel) и Window (активное окно) и возвращает область ячеек, которая содержит активную ячейку, находящуюся в активном окне активного приложения. Вот как это выглядит в коде:

Application.ActlveWlndow.ActiveCell.Borders.Color = vbRed

Так как в каждый момент времени активной может быть только одна ячейка, то свойства ActlveCell объектов Application и Window ссылаются на одну и ту же область ячеек. Таким образом, этот оператор можно переписать по-другому — так:

ActiveWindow.ActiveCell. Borders. Color = vbRed

илитак:

Application.ActiveCell.Borders.Color = vbRed

А в связи с тем, что возвращаемый объект Range определяется однозначно, оператор можно переписать и следующим образом:

ActiveCell.Borders.Color – vbRed

Свойство Borders тоже относится к числу свойств, возвращающих объект. Часть оператора ActlveCellBorders возвращает объект Border (рамку области ячеек), а затем свойству Color (цвет) этого объекта присваивает значение red (красный). Префикс vb, предшествующий значению red, указывает на то, что это значение является константой Visual Basic, в отличие от переменных, которые нужно описывать в программе.

Объект, возвращаемый свойством ActiveCell, - это объект Range. Таким образом, свойство Borders задает прямоугольную рамку вокруг группы ячеек, определенных в объекте Range.

ОператорApplication.ActiveWIndow.ActiveCell.Borders.Color = vbRed

станет более понятным, если прочитать его справа налево: «Цвет расположенной в активном окне приложения рамки области ячеек, которая содержит активную ячейку, становится красным [10].

Области в Excel — объекты VBA

Объекты Range определяют ячейки или области ячеек, которым можно присваивать значения, записывать в них формулы и с которыми можно работать вручную. В частности, действие оператора ActiveCell.Borders.Color = vbRed эквивалентно команде Cells (Ячейки) меню Format (Формат) и изменению значения в поле Color (Цвет) вкладки Border (Граница) диалогового окна Format Cells (Формат ячеек).

Кроме того, существует свойство Range, которое возвращает объект Range. Данное свойство позволяет использовать ссылку на ячейку или область ячеек, обращаясь к ней как к аргументу. Правда, здесь имеется одно ограничение: ссылки должны записываться с применением относительной или абсолютной адресации только в стиле А1:

Range(Al")

Range("$ASl")

Свойство Range возвращает объект Range, поэтому все свойства и методы, связанные с этим объектом, могут быть установлены посредством данного свойства. Свойство Range также может использоваться для возвращения объекта Range, который применяет ссылку на ячейку А1 (свойство Value возвращает значение ячейки А1):

Range('Al"). Value

Если ячейка А2 содержит формулу, то результат можно вычислить, воспользовавшись методом Calculate объекта Range, который возвращает свойство Range:

Range("A2").Calculate

Кроме того, воспользовавшись свойством Range, можно получить доступ к несмежным областям ячеек, а затем посредством одного оператора присвоить значение всем ячейкам. Это особенно удобно, если нужно присвоить всем ячейкам одинаковое значение:

Range("A3:B5.C3:D8").Value = 0

Свойство Range также можно использовать с двумя аргументами, которые указывают на ячейки, находящиеся в разных углах области ячеек, расположенных на одной диагонали. В частности приведенный ниже оператор выбирает ячейки области А1:С4:

Workbooks("Bookl").Sheets("Sheetl") Range{'Al","C4"}.Select

Процедуры и функции VBA

В VBA поддерживается следующая программная структура. На высшем уровне иерархии стоит приложение, далее идут проекты, связанные с фактическими документами этого приложения. На третьем уровне находятся модули (модули приложения, модули пользователя, модули класса, модули форм и модули ссылок), а на последнем — их процедуры и функции. Схематически такая иерархия показана на рисунке 1.1[12].