logo
Лекция1

3. Visual Basic for Application – язык объектно-ориентированного программирования. Начальные сведения

В нашем курсе мы познакомимся с языком Visual Basic for Application (VBA), при помощи которого можно выполнять обработку данных в любом из приложений Windows. Таким образом, если Турбо-Бейсик позволяет осуществлять взаимодействие между отдельными программами (подпрограммами), написанными на языке Турбо-Бейсик, то VBA позволяет осуществлять взаимодействие со всеми приложениями Windows, существенно расширяя их функциональные возможности, и, написав программу в одном из приложений, ее можно использовать в любом другом.

Язык VBA является объектно-ориентированным языком, встроенным в среду Windows. Объектно-ориентированное программирование (ООП) – новый подход к программированию, связанный с увеличением объема и сложности программного обеспечения. Базовые отличия VBA как языка ООП будут рассмотрены позднее.

Интегрированная среда разработки VBA представлена приложением, называемым редактором Visual Basic. Этот редактор вызывается из Microsoft Excel.

После запуска Excel на экране появляется основной экран Excel (рис. 1).

В Excel решение конкретной задачи представляется в рабочей книге, состоящей из рабочих листов. Рабочий лист разделен на отдельные ячейки, где пересекаются столбец и строка. Каждый столбец обозначен латинской буквой или сочетанием двух букв (A, B,..., Z, AA, AB, ...). Строка обозначена числом (1, 2, 3, ...). Адрес конкретной ячейки состоит из буквы, обозначающей столбец и числа, обозначающего строку (A1, B2, A12, ...).

Рис. 1

Окно приложения Excel (как и любого приложения Windows) содержит следующие элементы:

Строка заголовка показывает имя приложения, с которым ведется работа;

Строка меню обеспечивает доступ к основным командам;

Панель инструментов содержит кнопки (пиктограммы), с помощью которых открывается быстрый доступ к ряду часто используемых команд, процедур и функций программы. Щелчок левой кнопкой «мыши» по любой кнопке панели инструментов сразу же вызывает необходимое действие;

Строка формул, в которой отражается вводимый текст или формула, вводимая в текущей ячейке. Слева от строки формул показан адрес этой ячейки;

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

Справа расположены кнопки управления размером окна.

Запуск VBA осуществляется выполнением следующей последовательности действий: Сервис -> Макрос ->Visual Basic или набором клавиш Alt+F11. Далее в открывшемся окне проекта VBAProject нужно щелкнуть на “Лист1”. Откроется окно программы Code (рис. 2), в котором можно создавать исходный код на языке VBA, а также просматривать и редактировать уже созданный код. Созданную программу можно выполнить, используя команду Run или нажав клавишу F5. Чтобы вернуться на рабочий лист Excel, нужно щелкнуть по пиктограмме Excel (слева в панели инструментов).

Рис. 2

Алгоритм вычислений на языке VBA состоит из операторов, в основном совпадающих с операторами Турбо-Бейсика. Так для организации циклов по счетчику или по условию используются те же операторы, что и в Турбо-Бейсике. Тот же вид имеют и те же функции выполняют условный оператор и if-блок:

Ввод исходных данных в переменные программы и вывод результатов в VBA осуществляется другими средствами, чем в Турбо-Бейсике. О них поговорим позже.

Программа (программный код) на VBA состоит из процедур Sub или подпрограмм-функций Function, которые могут быть объединены в единый модуль (макрос) и выполнены.

Для всех используемые в программе переменных будем объявлять их типы: целый – integer, вещественный обычной точности – single, строковый – string (другие типы в примерах не используются и здесь не рассматриваются).

Замечание. Вообще, в VBA можно не объявлять тип явно, а для указания типа использовать соответствующий символ после имени, как в Турбо-Бейсике, например, а$ для строковой переменной. Можно использовать также тип Variant. Переменные этого типа принимают характеристики того конкретного типа данных, к которому относятся значения, сохраняемые в них в данный момент. Однако явное описание всегда предпочтительнее, т.к. программа при этом становится более строгой и легче воспринимается.

В качестве первого примера рассмотрим простейшую задачу, требующую организации циклов.

Пример 1. Вычислить сумму

S = 1 + 2 + 3 + … + 10.

Вариант 1.

Предусмотрим вывод вычисленной суммы в ячейку А4 листа Excel.

Программный код приведен на рис. 3.

Рис. 3

Оператор

range(“A4”).value = s

предназначен для вывода значения s в ячейку с адресом A4 текущего листа Excel (формальное определение функции range будет дано далее).

Чтобы получить результат, нужно выполнить команду RUN в строке меню. Результат (значение s) в соответствии с оператором range появится в листе1 окна Excel в ячейке A4 (рис. 4).

Рис. 4

Замечание. Для перехода в Excel нужно щелкнуть по пиктограмме Excel (левая кнопка в панели инструментов).

Вариант 2.

Вывод осуществляется в специальное окно на листе Excel при помощи функции MsgBox (рис. 5).

Рис. 5

В качестве аргумента функции MsgBox задается сообщение, которое будет отображено в диалоговом окне при выполнении этой функции, т.е. будет выведена строка, заключенная в кавычки (строковая константа), далее знак = и значение s. Знак & обозначает операцию конкатенации (объединения), Chr(13) – код символа перевода строки (рис. 6).

Рис. 6

Для возврата в VBA нужно щелкнуть по кнопке ОК.

Пример 2. Табулирование функции.

Получить таблицу функции

на отрезке [0,1; 0,8] с шагом 0,1. и построить график функции y(x).

Вариант 1.

Значения функции получаются в одной и той же переменной y и после каждого вычисления значения аргумента и функции выводятся в последовательные строки.

Программа и результат ее выполнения приведены на рис. 7, 8.

Рис. 7

Для вывода в последовательные строки используются операторы

Cells(i+1, 1).value=x

Cells(i+1, 2).value=y.

обеспечивающие вывод значений x и y в последовательные строки, начиная с 2-й (при i = 1) в два параллельных столбца (x в 1-й, y во 2-й) (формальное определение функции Cells будет дано далее).

Оператор

Sheets(“Лист1”).select

обеспечивает вывод в Лист 1 рабочей книги.

Рис. 8

Построение графика было осуществлено при помощи средств Excel.

Выделяем блок ячеек A1:B9 и вызываем «Мастер диаграмм». Откроется диалоговое окно «Мастер диаграмм (шаг 1 из 4):тип диаграммы», выбираем тип диаграммы – график, нажимаем Далее>, откроется диалоговое окно «Мастер диаграмм (шаг 2 из 4): источник данных диаграммы». Нажимаем «Ряд», в открывшемся списке «Ряд» слово «Аргумент» удаляем. Курсор мыши щелкаем на поле «Подписи оси X:» и зажимая левую кнопку мыши, выделяем блок A2:А9. Данные из блока A2:А9 перенесутся на ось X. Нажимаем Далее>, откроется диалоговое окно «Мастер диаграмм (шаг 2 из 4): параметры диаграммы», выбираем название диаграммы и осей X и Y, а также линии сетки. . Нажимаем Далее>, откроется диалоговое окно «Мастер диаграмм (шаг 2 из 4): размещение диаграммы», выбираем, где будет размещена диаграмма, нажимаем «Готово».

Вариант 2.

Для вычисления функции оформляется подпрограмма-функция и осуществляется обращение к ней из процедуры (рис. 9).

Рис. 9

Результат выполнения программы тот же, что и для варианта 1 (без графика).