
- •Л.В. Рыбакова Основы программирования в среде Visual Basic for Application (vba)
- •Содержание
- •1. Пользовательский интерфейс vba 5
- •2. Разработка программного кода 18
- •3. Объектно-ориентированное программирование на vba 100
- •Введение
- •1. Пользовательский интерфейс vba
- •1.1 Особенности среды программирования
- •1.2 Запуск vba
- •1.3 Структура редактора Visual Basic
- •1.3.1 Окно проекта Project-vbaProject
- •1.3.2 Окно редактирования кода
- •1.3.3 Окно редактирования форм
- •1.3.4 Окно свойств “Properties”
- •1.3.5 Окно панели элементов управления (Toolbox)
- •Контрольные вопросы
- •2. Разработка программного кода
- •2.1 Структура проекта vba
- •2.2 Пользовательские подпрограммы-функции
- •2.3 Пользовательские подпрограммы-процедуры
- •2.4 Данные и их описание
- •2.4.1 Алфавит и лексемы языка
- •2.4.2 Переменные и константы
- •2.4.3 Объявление переменных
- •2.4.4 Объявление констант
- •2.4.5 Строковые переменные
- •2.4.6 Области видимости переменных и констант
- •2.4.7 Типы данных
- •2.5 Функции в vba
- •2.5.1 Математические встроенные функции
- •2.5.2 Математические функции, не представленные в vba
- •2.5.3 Функция форматирования данных
- •2.5.4 Функции преобразования типов
- •2.6 Операторы, выражения и операции
- •2.6.1 Операция присваивания
- •2.6.2 Математические операции
- •2.6.3 Операции отношения
- •2.6.4 Логические операции
- •2.6.5 Строковые операции
- •2.7 Отладка программ и обработка ошибочных ситуаций
- •2.7.1 Отладка
- •2.7.2 Точки останова (контрольные точки)
- •2.7.3 Наблюдение за данными с помощью просматриваемых значений
- •2.7.4 Пошаговое выполнение программы
- •2.7.5 Обработка ошибок
- •Программирование алгоритмов линейной структуры
- •2.8 Условный оператор
- •Программирование алгоритмов разветвляющейся структуры
- •2.9 Оператор выбора (переключатель)
- •Программирование алгоритмов ветвлений со многими вариантами
- •2.10 Операторы цикла
- •2.10.1 Циклы с параметром For … Next
- •2.10.2 Циклы с условием (итерационные)
- •Программирование алгоритмов циклической структуры
- •Варианты индивидуальных экономических задач
- •2.11 Табулирование функции
- •2.11.1 Табулирование функции одной переменной
- •2.11.2 Табулирование функции двух переменных (вложенные циклы)
- •Разработка процедур для табулирования функции
- •2.12 Массивы
- •2.12.1 Объявление массива
- •2.12.2 Динамические массивы
- •2.12.3 Действия над массивами
- •2.12.4 Действия над элементами массива
- •2.12.5 Формирование массива
- •2.12.6 Одномерные массивы
- •Создание процедур для обработки последовательности
- •2.12.7 Двумерные массивы. Вложенные циклы
- •Создание процедур для обработки табличных данных
- •Контрольные вопросы:
- •3. Объектно-ориентированное программирование на vba
- •3.1 Разработка программы создания приложения с помощью Форм
- •Разработка пользовательского приложения с помощью объектов Форм
- •3.2 Встроенные диалоговые окна в vba
- •3.2.1 Окна сообщений (MsgBox)
- •3.2.2 Окна ввода
- •Разработка проекта встроенных диалоговых окон в vba
- •Варианты индивидуальных заданий
- •3.3 Объекты формы в vba: кнопки-переключатели, контрольные индикаторы, рамки
- •Разработка пользовательского приложения с помощью объектов: кнопка-переключатель, контрольный индикатор, рамка
- •3.4 Объекты формы в vba: Полоса прокрутки и Счетчик
- •Разработка пользовательского приложения с помощью объектов: полоса прокрутки, счетчик
- •3.5 Интеграция приложений: ms Excel и ms Word
- •3.5.1 Открытие документа ms Word функцией Create Object
- •3.5.2 Открытие документа ms Word функцией GetObject
- •Интеграция популярных приложений, входящих в пакет ms Office
- •Контрольные вопросы:
- •Список используемой литературы
- •Рыбакова Людмила Владимировна
2.5 Функции в vba
В VBA используются следующие виды функций:
- математические встроенные функции;
- математические функции, не представленные в VBA;
- функции форматирования данных;
- функции преобразования типов
2.5.1 Математические встроенные функции
Таблица 2 - Встроенные математические функции VBA
Функция |
Возвращаемое значение |
Abs (x) |
|
Atn (x) |
arctg (x) – арктангенс от значения параметра, заданного в радианах |
Sin (x) |
sin (x) – возвращает синус угла от значения параметра, заданного в радианах |
Cos (x) |
cos (x) – косинус указанного в радианах угла |
Tan (x) |
tg (x) – возвращает тангенс угла от значения параметра, заданного в радианах |
Exp (x) |
ex – возвращает число e, возведенное в указанную степень, где е – основание натурального логарифма |
Log (x) |
ln (x) – возвращает натуральный логарифм от значения числового выражения |
Sqr (x) |
|
Rnd (x) |
Случайное число из интервала [0,1). Перед вызовом функции надо использовать оператор Randomize (рандомизации) – запуск генератора псевдослучайных чисел) |
Sgn (x) |
Возвращает +1, если значение параметра положительно, -1, если отрицательное, 0, если 0 |
Fix (x) |
Возвращает результат округления выражения с плавающей точкой до целой части. В случае отрицательного параметра возвращает ближайшее большее отрицательное число |
Int (x) |
Возвращает результат округления выражения с плавающей точкой до целой части. В случае отрицательного параметра возвращает ближайшее меньшее отрицательное число |
2.5.2 Математические функции, не представленные в vba
Таблица 3 - Математические функции, непредставленные в VBA
Функция |
Возвращаемое значение |
Log(X)/Log(10) |
lg(х) – возвращает десятичный логарифм от значения числового выражения |
Atn
|
arcsin (x) – возвращает арксинус угла от значения параметра, заданного в радианах |
Atn
|
arccos (x) – возвращает арккосинус угла от значения параметра, заданного в радианах |
Cos (x)/Sin (x) |
ctg (x) - возвращает котангенс угла от значения параметра, заданного в радианах |
Значение числа π |
Pi = 4 * Atn (1) |
2.5.3 Функция форматирования данных
Для того чтобы представить выражение отформатированным в специфицированном формате, необходимо воспользоваться функцией Format. Она возвращает значение типа Variant (String), содержащее выражение, отформатированное согласно указанным спецификациям.
Синтаксис:
Format (выражение [ , “Имя формата (или символ формата)“])
Именованные числовые форматы показаны в таблице 4.
Таблица 4 - Именованные числовые форматы
Имя формата |
Описание |
General Number |
Число без разделителя тысяч |
Currency |
Отображает две цифры справа от десятичной точки |
Fixed |
Отображает одну цифру слева и две справа от десятичной точки |
Standard |
Отображает одну цифру слева и две справа от десятичной точки и выводит разделитель тысяч |
Percent |
Отображает число в виде процентов и выводит две цифры справа от десятичной точки |
Scientific |
Использует формат с плавающей десятичной точкой |
Yes/No |
Отображает No, если число равно 0, и Yes – в противном случае |
True/False |
Отображает False, если число равно 0, и True – в противном случае |
On/Off |
Отображает Off, если число равно 0, и On – в противном случае |
Рисунок 11 - Программа, показывающая работу различных именованных форматов с помощью окна Immediate
Пользовательские числовые форматы показаны в таблице 5.
Таблица 5 - Символы пользовательского формата
Символ |
Описание |
0 |
Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного параметром, есть какая-нибудь цифра в той позиции разряда, в которой в строке формата находится 0, функция отображает эту цифру параметра, если нет – в этой позиции отображается нуль. Пример. Debug.Print Format (1.2 ^2, “##.000”) |
# |
Резервирует позицию цифрового разряда. Отображает цифру или ничего. Если у числа, представленного параметром, есть какая-нибудь цифра в той позиции разряда, в которой в строке формата находится #, функция отображает эту цифру параметра, если нет – в этой позиции ничего не отображается. Пример. Debug.Print Format (1.2 ^2, “##.###”) |
. (точка) |
Резервирует позицию десятичного разделителя. Указание точки в строке формата определяет, сколько разрядов необходимо отображать слева и справа от десятичной точки. |
Продолжение таблицы 5
E+,E-, e+, e- |
Разделитель мантиссы и порядка в экспоненциальном формате. Пример. Debug.Print Format (sin(x) * exp(5), “#.###e+##”) |
% |
Резервирует процентное отображение числа Пример. Debug.Print Format (0.5, «#.%») (отобразится 50 %) |
d,m,y |
Резервирует позицию при выводе дня, месяца, года в категории форматов Data Пример. Debug.Print Format (Now, “dd/mm/yyyy”) (отобразится текущая дата, например 25.09.2005 |
/ |
Разделитель дня, месяца, года в категории форматов Data |