Слайд 2
VBA
Visual Basic for Applications (VBA, Visual Basic для
приложений) — немного упрощённая реализация языка программирования Visual Basic,
встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а также во многие другие программные пакеты, такие как AutoCAD, SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS.
Слайд 3
VBA
VBA является интерпретируемым языком. В будущем Microsoft планирует
заменить VBA на Visual Studio Tools for Applications (VSTA)
— инструментарий расширения функциональности приложений, основанный на Microsoft .NET.
К достоинствам языка можно отнести сравнительную лёгкость освоения, благодаря которой приложения могут создавать даже пользователи, не программирующие профессионально. К особенностям VBA можно отнести выполнение скрипта именно в среде офисных приложений.
Недостатком являются проблемы с обратной совместимостью разных версий. Также к недостаткам часто относят и слишком высокую открытость кода для случайного изменения, тем не менее, многие программные продукты (например, Microsoft Office и IBM Lotus Symphony) позволяют пользователю использовать шифрование исходного кода и установку пароля на его просмотр.
Слайд 4
Среда VBA
Создав базу данных MS Access автоматически создается
проект VBA с названием базы данных.
Чтобы открыть среду
разработки VBA необходимо:
перейти на вкладку Работа с базами данных;
выбрать самую левую пиктограмму — Visual Basic — откроется окно с собственной средой разработки, в которой имеется меню, окна и другие элементы, использующиеся при работе с проектом.
Слайд 7
Среда VBA
Проект VBA носит имя базы данных и
содержит формы, модули класса и модули кода.
На представлены
четыре основных окна среды VBA:
окно проекта (заголовок окна: Project — sample);
окно текста (на рисунке заголовка окна нет, но хорошо видны две надписи:General и StartMainMenu);
окно свойств (заголовок: Properties — ModuleMain);
окно отладки (Immediate).
В окне проекта можно выбрать требуемый объект. Для его редактирования сделайте по объекту двойной щелчок мышью. В окне кода появится его текст, а в окне Properties — свойства объекта.
Окно свойств предназначено для задания
свойств объектов. Например, можно указать в окне свойств формы фон, заголо-
вок, номер темы в файле справки и т. д.
На первой вкладке свойства расположены в алфавитном порядке (Alphabetic).
Выбор второй вкладки этого окна (Categorized) отсортирует свойства по категориям.
Слайд 8
Среда VBA
Окно редактирования кода предназначено для ввода текста
процедур VBA. Код внутри модуля сгруппирован в отдельные разделы
— процедуры. Редактор VBA может отображать текст в двух режимах: просмотр всего модуля или просмотр отдельной процедуры.
В режиме просмотра всего модуля процедуры отделяются одна от другой горизонтальной чертой.
Два раскрывающихся списка (в них отображены надписи General и StartMainMenu) предназначены для выбора объекта и его составляющих соответственно. Если в VBA идет работа с кодом обработки событий формы, то левый список содержит объект формы, а правый — перечень событий, допустимых для выбранного объекта.
Слайд 9
Возможности редактора кода
Редактор кода VBA наделен способностью автоматически
завершать написание составных частей строки текста (операторов, параметров, свойств).
Он сам предлагает разработчику список компонентов, которые могут завершить введенную инструкцию или отобразить на экране сведения о процедуре или функции после введения имени
Редактор кода выполняет автоматичефскую проверку синтаксиса введенной строки после нажатия клавиши . Если строка выделяется красным цветом — ищите ошибку.
Слайд 10
Первая программа VBA
VBA является языком сценариев – это
значит, что каждый раз когда пользователь совершает определенное действие
срабатывает заранее написанный код (происходит обработка события).
Для написания первой программы:
Создайте на стартовой форме кнопку «Привет» не выбирая ни какого события (нажать Отмена);
В свойствах кнопки в разделе «События» выбрать «Процедура обработки событий» напротив пункта «Нажатие кнопки» и нажать кнопку «…»;
В открывшемся окне редактора кода введите «MsgBox “Hello”» - этот код автоматически сгенерирует сообщение, когда кнопка будет нажата;
Закройте редактор, сохраните форму и откройте ее для использования, опробуйте работу кнопки.
Слайд 12
Принципы синтаксиса VBA
Регистр не играет роли – вы
можете прописать оператор как в верхнем, так и в
нижнем регистре, или вообще в вперемешку, например, dim, DIM, Dim, разницы нет.
Комментарии – для комментирования строки, перед ней прописывается одинарная кавычка или ключевое слово REM.
Максимальная длина любого имени (будь то имя переменной, константы или процедуры) составляет 255 знаков.
В отличии от JavaScript, Jscript или С языков, в VBA в конце строки с операторами не нужно ставить запятой.
Двоеточие – чтобы не прописывать каждый оператор в отдельной строке, их можно с помощью двоеточия прописать в одну строку, например: MsgBox "Строка1" : MsgBox "Строка2"
Перенос операторов – если строка с операторами слишком длинная, то ее можно разделить на несколько при помощи символа подчеркивания и знака &, например:
MsgBox "Это простая" _
& "строка"
Слайд 13
Создание макроса (модуля)
Для того чтобы открыть редактор VBA,
выберите команду Сервис, Макрос, Редактор Visual Basic или нажмите
комбинацию клавиш
+.
Далее можно воспользоваться меню редактора: выбрать команды Insert, Module.
На листе созданного модуля появятся стандартные строки начала и конца процедуры:
Public Sub ИмяПроцедуры()
End Sub
Между ними можно набрать код (инструкции) программы.
Для запуска программы выбрать в меню Run команду Run Sub/UserForm или нажать кнопку Плэй.
Если в программе обнаружены ошибки, то компилятор выдает сообщение и отладчик отмечает строку с ошибкой желтым цветом. Чтобы снять это выделение, можно нажать кнопку Стоп.
Слайд 14
Переменные VBA
Переменная — это область памяти компьютера, имеющая
имя. В VBA переменные используются для хранения данных в
оперативной памяти. После создания переменная указывает на одну и ту же область памяти до тех пор, пока не будет уничтожена. Разработчику не нужно знать, где находится эта область. Достаточно лишь сослаться на имя переменной.
При выборе имени переменной следует руководствоваться правилом:
имя должно начинаться с буквы;
имя не может содержать пробел и точку, а также @, &, !, $, #;
имя не должно быть длиннее 255 символов;;
не рекомендуется назначать имена, совпадающие с названием функций и методов VBA.
Слайд 15
Переменные VBA
Перед началом работы с переменной ее нужно
объявить. Сделать это можно при помощи операторов Dim, Public,
Private и Static. В зависимости от используемых операторов и месте их появления в коде программы, переменной будет назначена область видимости и время жизни.
В VBA существуют три области видимости переменной:
Переменная уровня проекта.
Описывается с помощью инструкции Public. Также называется открытой. Является доступной для всех процедур проекта VBA. Пример:
Public Account As Integer
Переменная уровня модуля.
Описывается с помощью инструкции Dim или Private. Является доступной только в том модуле, в котором описана. Описание такой переменной необходимо разместить перед описанием всех процедур модуля.Пример:
Privat LastName As String
Dim LastName As String
Переменная уровня
процедуры.
Описывается с помощью инструкции Dim или Static. Является доступной только в той процедуре, в которой описана. Если используется конструкция Static, то переменная сохраняет свое значение, пока выполняются другие процедуры Если Dim, то после завершения работы процедуры значение такой переменной всегда теряется.
Слайд 17
Переменные VBA
Типы данных в языках программирования можно условно
разбить на следующие группы:
примитивные типы (целые, вещественные числа, логические
и символьные значения);
конечные последовательности однотипных элементов (линейные массивы, матрицы, многомерные массивы);
конечные последовательности разнотипных элементов (записи, структуры);
динамические последовательности со специальными операциями доступа (очереди, стеки, списки);
сложные типы, ориентированные на специальные предметные области (электронные таблицы, листы Excel, диапазоны ячеек листов, базы данных и т.п.);
произвольные типы, определяемые пользователем (например, самолет, автомобиль, животное, собаки, студенты).
Слайд 18
Переменные VBA (с. 160)
VBA дает возможность описывать и
использовать переменные различных типов.
Выбор типа переменной основан на требованиях
разрабатываемого приложения. В VBA имеются строки, числа, даты, объекты, логические значения, а также общий тип данных — Variant. Он применяется по умолчанию и может содержать данные любого типа, кроме строк фиксированной длины.
Слайд 20
Переменные VBA
Для обязательного объявления всех переменных в начало
модуля надо поместить директиву:
Option Explicit
Использование этой директивы не допускает
возможности работы с необъявленными переменными.
Константа — это область памяти компьютера, имеющая имя и не менающая свое значение на протяжение всей работы программы. В VBA константы, как и переменные, используются для хранения данных в оперативной памяти.
В VBA можно как описать собственные константы, так и применять стандартные, которых в языке великое множество. При описании константы необходимо сразу присвоить ей значение, например:
Public Const Pi As Double=3.141592653589793
Описав константу один раз, можно использовать ее в разных выражениях столько раз, сколько это требуется. Область видимости констант VBA регламентируется теми же правилами, что и у переменных.
Слайд 21
Функция MsgBox
Функция MsgBox() — стандартная функция вывода сообщений
на экран. Для работы с ней применяется 21 константа.
Добавим
вывод сообщения на экран при закрытии приложения:
Откроем стартовую форму на которой есть кнопка закрытия приложения;
Выберем обработку событий по клику для кнопки закрытия приложения;
Добавим следующий код:
Откроем форму для работы и нажмем на кнопку выхода.
Слайд 22
Функция MsgBox
Текст, следующий за символом ' до конца
строки, представляет собой комментарий и игнорируется транслятором, нужен для
пояснения.
Обратите внимание на константы VBA. Их в этом примере используется четыре, причем значения трех складываются:
vbInformation=64 - используется значок информации
vbOKCancel=1 - отображаются кнопки OK и Отмена
VbDefaulButton1=0 - номер выделенной кнопки
И если нажата кнопка OK, то значение VbOK=1.
Слайд 23
Функция MsgBox (с 163-164)
Далее приведены константы, которые можно
указать в качестве аргументов функции MsgBox() для определения состава
кнопок в диалоговом окне, константы, определяющие отображаемые в диалоговом окне значки, константы, определяющие основную кнопку в диалоговом окне, константы, соответствующие выбранной кнопке.
Слайд 26
Ввод значений в VBA
В языке VBA ввод
значения переменной x можно осуществить с помощью функции InputBox,
например:
x = InputBox(“Введи значение x”)
Слайд 27
Описание программы на VBA
Описание программы P(x,y,z) – это
текст программы P, в котором x, y, z являются
обозначениями входных (и, возможно, выходных) данных. Эти обозначения называют формальными параметрами программы P. Описание обычно делят на заголовок и тело.
В заголовке указываются типы входных данных и результата (выходных данных). Если программа не вычисляет конкретное значение, например, просто печатает текст или производит различные действия со своими собственными переменными, не сообщая результаты в качестве выходных данных, то считается, что результат имеет неопределенный тип. Такие программы называют часто процедурами. В отличие от них программы, вычисляющие определенное значение (некоторое число, текст, массив данных и т.п.), называют функциями. Говорят тогда, что функция возвращает значение.
Общий синтаксис на VBA:
Слайд 28
Описание программы на VBA
Тело программы – это сама
программа, описание ее собственных переменных и операторы, реализующие алгоритм.
Функция вычисления факториала:
Процедура вызова функции факториала:
Слайд 29
Описание программы на VBA
Программа, используемая другой программой, может
иметь статус подпрограммы, и тогда ее описание может быть
помещено внутри использующей программы, среди других ее описаний (описание одной программы содержит описание другой, оно, в свою очередь, содержит описание третьей и т. д.). В языках С++, VBA программы имеют независимый статус, т.е. описываются отдельно от использующей программы, вложения описаний недопустимы. По описанию программы компилятор выделяет память, содержащую команды программы, память для переменных программы и память для ее формальных параметров (пока пустую). Для того, чтобы программа, содержащая параметры, заработала, нужно ее вызвать, т.е. использующая программа должна содержать оператор вызова.
Вызов программы должен включать имя программы и набор конкретных значений, подставляемых вместо ее формальных параметров. Синтаксис вызова процедуры в VBA такой:
Слайд 30
Описание программы на VBA
Список фактических параметров – это
последовательность фактических
параметров, разделенных запятой. В качестве фактического параметра может
выступать значение, переменная, выражение, вызов функции.
Вызов процедуры – это независимый оператор, он не может стоять в правой части присваиваний, поскольку не возвращает значения.
Вызов функции должен стоять в правых частях присваиваний, он может быть операндом выражения, т.к. возвращает значение, которое и используется при вычислении выражения.
Механизм реализации вызова:
в точке вызова управление передается указанной программе;
переменные, указанные в качестве имен формальных параметров получают конкретные значения, заданные через фактические параметры;
программа исполняется с этими фактическими значениями параметров;
если программа является функцией, то ее значение (результат работы) возвращается в точку вызова и может быть использовано, например, в выражении;
если программа – процедура, то после ее исполнения просто происходит возврат управления в точку вызова, следующему за вызовом оператору.
Слайд 31
Описание программы на VBA
Список фактических параметров – это
последовательность фактических
параметров, разделенных запятой. В качестве фактического параметра может
выступать значение, переменная, выражение, вызов функции.
Вызов процедуры – это независимый оператор, он не может стоять в правой части присваиваний, поскольку не возвращает значения.
Вызов функции должен стоять в правых частях присваиваний, он может быть операндом выражения, т.к. возвращает значение, которое и используется при вычислении выражения.
Механизм реализации вызова:
в точке вызова управление передается указанной программе;
переменные, указанные в качестве имен формальных параметров получают конкретные значения, заданные через фактические параметры;
программа исполняется с этими фактическими значениями параметров;
если программа является функцией, то ее значение (результат работы) возвращается в точку вызова и может быть использовано, например, в выражении;
если программа – процедура, то после ее исполнения просто происходит возврат управления в точку вызова, следующему за вызовом оператору.
Слайд 32
Описание программы на VBA
Например, программа, содержащая вызовы процедуры
Sum и функции fact, может быть такой (после знака
‘ идет однострочный комментарий):
Слайд 33
Описание программы на VBA
Программы – процедуры и функции
могут быть собраны в автономно существующие, например, в рамках
проекта, более «крупные» единицы – модули.
Видимость переменных: При всякой сборке возникает вопрос: могут ли программы использовать имена и значения переменных из других программ? Этот вопрос решается для каждого языка программирования в разделе, называемом правилами видимости переменных.
Для VBA действуют следующие правила видимости:
переменные, описанные в процедуре или функции, видны только в ней. Они объявляются с помощью ключевого слова Dim или Static и называются локальными.
переменные, описанные в модуле вне описаний программ модуля с ключевыми словами Dim или Private, видны во всех программах этого модуля. В других модулях они не видны.
Переменные, описанные в модуле вне описаний программ модуля с ключевым словом Public, видны во всех модулях (процедурах, функциях) проекта.
Слайд 34
Практика использования VBA
Ознакомьтесь с документом «Учебное пособие по
VBA. Глава 1. Алгоритмы и программы» и составьте следующие
программы:
Найти значения переменной y, заданные формулой y = x^2 + x - sin(x) для заранее заданного и введенного с клавиатуры положительного числа х. Оформить вычисление в процедуру или функцию.
Найти минимальное из двух чисел вводимых с клавиатуры.
Найти среднее арифметическое четных чисел из N чисел, вводимых с клавиатуры.