ТОП 10:

Объектное программирование. Visual Basic



 

На начальной стадии компьютерного обучения мы встречались с понятиями "структура", "класс", которые позволяют группировать отдельные элементы и рассматривать их как единое целое - объект. Включение в состав объектов функций, которые управляют этими объектами (классы), качественно изменило стиль программирования, ориентировало программиста на работу с микро- и макрообъектами, создало новое направление - "объектно-ориентированное программирование (ООП)".

В основе программных комплексов, входящих в состав Microsoft Office (Excel, Word, Access и др.), лежит объектно-ориентированный язык программирования Visual Basic (VB). В первой части пособия мы вскользь рассматривали написанные на Visual Basic макросы, создаваемые в Excel. При этом не только читали их, но и корректировали. Мы интуитивно осознали, что Visual Basic открывает для нас практически бесконечные возможности расширения Excel путем разработки новых программных процедур и функций. Для этого нам нужно лишь освоить основы программирования на Visual Basic.

Основные понятия

Объекты

Известно, что такое физический объект. Клавиатура, компьютер, мышь, монитор, принтер - такие же физические объекты, как и ваша чашка кофе. А что такое программный объект? Программный объект включает в себя данные и код, который знает, как манипулировать этими данными. Он может быть представлен как реальный физический объект, например в виде командной кнопки, или как некоторая программно-информационная структура, например связный список или библиотека функций. Общие примеры объектов Visual Basic и Excel - это таблицы, области ячеек, текстовые окна, рабочие папки, диаграммы, модули и др.

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

Объект участвует в программах через посредство своих свойств и методов. Он имеет идентификатор или ключевое слово (часто говорят, объект – это то, что имеет имя). Свойства и методы отделяются от него точкой.

Методы - это действия (открыть, закрыть, копировать и др.), которые можно выполнять с объектами. Как правило, они отвечают на вопрос “Что делать?”. Часто методы, подобно функциям, имеют аргументы. Кстати, функции класса также называются методами.

Пример. Для добавления нового рабочего листа (объекты Worksheets) используется метод Add.

Процедура Комментарий
Sub AddSheet() Начало процедуры (Sub – от Subroutine).
Worksheets.Add Добавление нового листа
End Sub Конец процедуры

Пример метода с параметрами - ActiveWorkbook.Close saveChanges:=False.

Здесь saveChanges:=False - параметр метода Close (без сохранения изменений).

Наборы

Однотипные объекты объединяются в наборы (набор рабочих книг, листы рабочей папки, группа управляющих кнопок и др.). Имеются методы, позволяющие выделить объект из набора. Например, оператор Workbooks(1).Close указывает, что нужно закрыть (метод Close) первый объект из набора Workbooks (сочетание Workbooks() - это упомянутый метод, позволяющий выбрать соответствующий элемент из набора).

На объекты можно ссылаться как по порядковому номеру в наборе, так и по имени, например, Workbooks("Горсети.xls").Close.

Вложение объектов

Объекты могут включать в себя другие объектные наборы (папка состоит из листов, которые, в свою очередь, включают в себя таблицы). Для того чтобы добраться до нужного объекта, необходимо перечислить все иерархически предшествующие.

Рассмотрим оператор Workbooks("Горсети.xls").Worksheets(1).Delete. Методом Workbooks() из группы загруженных файлов извлекается тот, который имеет название "Горсети.xls". Это записывается в виде Workbooks("Горсети.xls"). Только теперь мы получаем объект, с которым что-то можно делать. Простая запись "Горсети.xls" - это еще не объект, это просто название файла. Далее, по аналогии, метод Worksheets(1) возвращает объект - первый лист из набора.

Для того чтобы не запутаться в иерархии объектов, желательно пользоваться конструкторами, которые непременно доведут до цели. Наиболее употребительные наборы: Sheets (страницы), Workbooks (открытые Excel-файлы), Charts (диаграммы).

Можно оперировать сразу со всем набором объектов, например для закрытия всех открытых файлов: Workbooks.Close.

Свойства

Свойства - это характеристики (атрибуты) объектов, которые можно видеть и изменять (цвет, величина, доступность объекта и др.). Свойства в отличие от методов никогда не имеют аргументов. Обычно свойства меняются оператором присвоения. Например, пусть в файле "Горсети.xls" изменяется название рабочего листа на новое "ТКЗ". Это реализуется оператором:

Workbooks("Горсети.xls").Worksheets("Sheet1").Name = "ТКЗ".

Здесь у последнего по иерархии вложенного объекта (страница с названием "Sheet1") меняется свойство Name. Свойство Name стоит слева от знака равенства - ему присваивается значение. Для того чтобы получить значение этого свойства, необходимо поместить приведенную конструкцию справа от знака равенства, например в операторе Range("k20").Value = Worksheets(1).Name .

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

Выше было показано, что существуют методы и свойства, возвращающие объект. Они называются акссесорами (от слова access - доступ) и обычно сопровождаются аргументами в скобках, например,

Workbooks("Горсети.xls").Activate (активизируется файл "Горсети.xls" из набора Workbooks);

Worksheets("ТКЗ").Cells(1,1).ClearContents (в листе с именем "ТКЗ" очищается содержимое ячейки с координатами: строка 1, столбец 1).

Примеры свойств, возвращающих объект: ActiveCell (активная ячейка), ActiveWindow (активное окно), ActiveSheet (активная страница), Selection (выделенная область), Font (атрибуты символов), Interior (внутренняя область), Border (рамка).

Основные методы

Методы Range, Cells, Offset

В макросах, процедурах или программных модулях отдельные ячейки или блоки ячеек таблиц могут быть доступны только как объекты Range. Три метода позволяют создавать объекты Range: Range, Cells и Offset. Эти методы отличаются только способом обозначения ячеек. Специфику методов можно понять из примеров объектов:

Range(“В2”) - ячейка В2 ;

Range(“В2:D12”) - блок ячеек В2:D12.

Часто используется краткая форма метода Range - квадратные скобки, например запись Worksheets("ТКЗ"). Range(“E7”) эквивалентна Worksheets ("ТКЗ"). [E7].

Метод Cells(2,3) возвращает ячейку на пересечении строки 2 и столбца 3 (эквивалентно Range(“С2”)). Данный метод более предпочтителен при использовании в циклах. Нумерация строк и столбцов ведется от верхнего левого угла объекта. Объектом может быть выделенный пользователем блок ячеек и идентификация ячеек в стиле «буква-цифра» затруднительна. Здесь лучше использовать метод Cells. Действительно, в цикле, как правило, необходимо менять индексацию. Вероятно, можно, но очень затруднительно менять буквы А, В, С,… .

Метод Offset работает аналогично Cells, с тем отличием, что возвращаемый объект всегда задается относительно верхнего левого угла текущего объекта. Числа здесь на 1 меньше, чем в методе Cells. Метод Offset чаще всего используется для создания объекта относительно текущей активной ячейки в рабочей таблице, например, два следующих оператора ссылаются на одну и ту же ячейку E3:

Worksheets("ТКЗ"). Range(“A1”). Cells(3,5) и Worksheets("ТКЗ"). Range(“A1”). Offset(2,4).

Данные примеры кроме иллюстрации специфики Cells и Offset показывают, что новый объект (ячейка Е3) может быть вне текущего объекта (ячейка А1). Текущий объект служит лишь как точка отсчета.

 

 

Самостоятельная работа

· Используя свойство ActiveCel (активная клетка) и метод Cells(), составьте и апробируйте процедуру записи числа 1 справа, слева, сверху и снизу от активной клетки.

Методические указания. Выберите активную клетку. Окрасьте ее для лучшего обозначения места работы. Перейдите в среду Visual Basic (Alt+F11 или Сервис/Макрос/Редактор Visual Basic). Активизируйте один из модулей. Откройте меню - «вставка процедуры» и выберите объект – процедура (Procedure), рис. 4.1. Присвойте процедуре какое-либо имя, например test. Внутри тела процедуры запишите оператор, например ActiveCell.Cells(1, 2).Value = 1.

Рис. 4.1 Вставка процедуры

При конструировании операторов старайтесь максимально использовать подсказки – перечни объектов, свойств и методов: нажмите кнопку обозревателя объектов (Oblect Broweser); выберите объект Application; найдите объект ActiveCell, скопируйте это ключевое слово в буфер и вставьте его в нужное место программного модуля.

Как только вы поставите точку, сразу появляется окно свойств и методов, где можно найти метод Cells. Двойной щелчок ЛК мыши сразу переносит это ключевое слово в нужное место оператора. Свойство Value можно также найти через кнопку (Oblect Broweser).

· Запишите (можно через копирование) остальные три оператора. Выполните процедуру (кнопка ). Перейдите на исходный лист рабочей книги (или ярлык на панели задач, или кнопка ИМ) и убедитесь в правильности выполненных операций.

· Составьте и апробируйте другую процедуру записи числа 1 по диагоналям от активной клетки.

· Выполните предыдущие задания, используя метод Offset().







Последнее изменение этой страницы: 2016-08-26; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.226.243.36 (0.008 с.)