- •ВВЕДЕНИЕ
- •1 ОСНОВЫ ПРОГРАММИРОВАНИЯ НА VBA
- •1.1 Типы данных
- •1.2 Требования к идентификаторам
- •1.3 Приоритет выполнения операций
- •1.4 Встроенные функции
- •1.5 Функции управления процессом выполнения программ
- •1.6 Формирование и обработка массивов
- •1.7 Создание управляющих кнопок
- •2 БАЗОВЫЕ ПОНЯТИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
- •3 РАЗРАБОТКА ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПРОГРАММЫ
- •3.1 Интерфейс среды разработки языка VBA
- •3.2 Создание пользовательской формы
- •4 ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ
- •4.1 Структурные элементы пояснительной записки
- •4.2 Оформление элементов пояснительной записки
- •5 ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •ПРИЛОЖЕНИЕ Б ПРИМЕРЫ ОПИСАНИЯ ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 ОСНОВЫ ПРОГРАММИРОВАНИЯ НА VBA
1.1 Типы данных
Любая программа оперирует с некоторыми данными, используемыми в расче- тах. Все данные должны быть описаны с помощью типов данных, определяющих возможный набор значений данных и допустимые операции над ними. Основные типы данных приведены в таблице 1.
Таблица 1 – Основные типы данных
|
|
|
Объем |
|
Тип данных |
Описание |
Диапазон |
памяти, |
|
|
|
|
байт |
|
Byte |
Целое число |
От 0 до 255 |
1 |
|
Integer |
Целое число |
От –32 768 до 32 767 |
2 |
|
Long |
Длинное целое число |
От –2 147 483 648 |
4 |
|
до 2 147 483 647 |
||||
|
|
|
||
|
|
Для отрицательных чисел: |
|
|
Single |
Число с плавающей точкой |
от –3,4Е38 до –1,4E–45. |
4 |
|
одинарной точности |
Для положительных чисел: |
|||
|
|
|||
|
|
от 1,4E–45 до 3,4E38 |
|
|
|
|
Для отрицательных чисел: |
|
|
Double |
Число с плавающей точкой |
от –1,7E308 до –4,9E–324. |
8 |
|
двойной точности |
Для положительных чисел: |
|||
|
|
|||
|
|
от 4,9E–324 до 1,7E308 |
|
|
Currency |
Число с фиксированной деся- |
От –922 337 203 685 477.5808 |
8 |
|
(денежный) |
тичной точкой |
до 922 337 203 685 477.5807 |
||
|
||||
String |
Строка символов постоянной |
От 0 до 216 |
Длина |
|
длины |
строки |
|||
|
|
|||
|
Строка символов переменной |
|
10 + |
|
String |
От 0 до 231 |
длина |
||
длины |
||||
|
|
строки |
||
|
|
|
||
Variant |
Универсальный |
Значения любого типа |
от 16 |
|
Boolean |
Логический |
True или False |
2 |
|
Date |
Дата |
От 1.01.100 г. до 31.12.9999 г. |
8 |
VBA может автоматически типизировать данные, однако это приводит к за- медлению выполнения программы из-за неэффективного использования памяти. Поэтому их нужно объявлять явно. Для обеспечения явного объявления данных не- обходимо в качестве первой инструкции включить оператор Option Explicit.
4
Если тип данных не определен, то по умолчанию будет задан тип данных Variant. Данные, которые хранятся в Variant, изменяют свой тип в зависимости от того, какие операции над ними выполняются.
Данные в программе могут быть представлены в виде констант и пере-
менных.
Константа – это именованная область памяти, используемая для хранения фиксированного значения, которое невозможно изменить при выполнении про- граммы.
Переменная – это именованная область памяти, в которой могут храниться изменяющиеся значения.
Примеры:
– объявление константы
Const pi as single = 3.1459
– объявление переменных
Dim a as single, b as integer, c as byte
1.2 Требования к идентификаторам
Обращение к константам и переменным осуществляется по идентификаторам (именам), которые должны удовлетворять следующим требованиям:
−начинаются с буквы;
−не содержат точки, @, #, %, &, !, $, пробел;
−длина не более 255 символов;
−не являются ключевыми словами языка VBA (именами операций, операто- ров, встроенных функций);
−должны быть уникальны внутри области, в которой они определены. Правильные имена: А; Ф1; Prog_1; Баланс.
Неправильные имена: 1А; Prog 1; Баланс#; sin.
5
1.3 Приоритет выполнения операций
Приоритет выполнения операций определяет последовательность вычислений в программе (таблица 2). Изменить порядок вычисления можно с помощью скобок. Максимальный приоритет – 1, минимальный – 13.
Таблица 2 – Приоритет выполнения операций
|
|
Знак |
|
Пример |
Возвращаемое значение |
||
Приоритет |
Описание |
вычисляемого |
при a = 5; b = 2; |
||||
операции |
|||||||
|
|
|
|
|
выражения |
с = true; d = false |
|
|
|
|
|
Математические операции |
|
||
1 |
|
|
|
Вызов функции и скобки |
|
|
|
2 |
|
^ |
|
Возведение в степень |
a ^ b |
25 |
|
3 |
|
− |
Cмена знака |
− a |
–5 |
||
4 |
|
* |
|
Умножение |
a * b |
10 |
|
|
/ |
|
Деление |
a / b |
2.5 |
||
|
|
|
|||||
5 |
|
\ |
|
Целочисленное деление |
a \ b |
2 |
|
6 |
|
mod |
Остаток от деления по модулю |
a mod b |
1 |
||
7 |
|
+ |
|
Сложение |
a + b |
7 |
|
|
− |
Вычитание |
a − b |
3 |
|||
|
|
||||||
8 |
|
& |
|
Объединение строк |
a & b |
52 |
|
|
|
|
|
Операции отношения |
|
||
|
|
< |
|
Меньше |
a < b |
false |
|
|
|
> |
|
Больше |
a > b |
true |
|
9 |
|
<= |
|
Меньше или равно |
a <= b |
false |
|
|
>= |
|
Больше или равно |
a >= b |
true |
||
|
|
|
|||||
|
|
<> |
|
Не равно |
a <> b |
true |
|
|
|
= |
|
Равно |
a = b |
false |
|
|
|
|
|
Логические операции |
|
||
10 |
|
Not |
|
Логическое отрицание |
Not© |
false |
|
11 |
|
And |
|
Логическое умножение |
c and d |
false |
|
|
|
(конъюнкция) (И) |
|||||
|
|
|
|
|
|
||
12 |
|
Or |
|
Логическое сложение |
c or d |
true |
|
|
|
(дизъюнкция) (ИЛИ) |
|||||
|
|
|
|
|
|
||
13 |
|
Xor |
|
Исключающее or |
c xor d |
true |
Пример: |
|
|
|
|
3 * 9 ^ 1/2 = 3 |
91 |
= 13.5. |
|
|
|
2 |
|
|
|
|
|
1 |
|
|
Типичная ошибка – 3 * 9 ^ 1/2 = 3 9 |
|
= 3 3 = 9. |
||
2 |
6
1.4 Встроенные функции
В VBA есть ряд встроенных функций, упрощающих вычисления и операции. Информация по ним приведена в справочной системе VB (Visual Basic).
Чтобы получить список функций VBA при написании кода, введите VBA и точку (.). VB отображает список всех вложенных объектов, включая функции. Функции обозначаются зеленым значком (рисунок 1).
Рисунок 1 – Функции VBA
При написании программы также можно использовать большинство функций рабочего листа Microsoft Excel.
Для того чтобы найти нужную функцию и определить правила работы с ней, необходимо в VB нажатием клавиши F1 вызвать справку. В поле Справка по поис-
ку ввести List и нажать кнопку (начать поиск). В окне справки Microsoft Visual
Basic выбрать раздел . В появившемся списке всех доступных функций выбрать нужную.
В Visual Basic функции рабочего листа (worksheet ) Microsoft Excel доступны через объект WorksheetFunction.
Некоторые функции приведены в таблицах 3, 4.
Таблица 3 – Математические функции
Функция |
Возвращаемое значение |
Код в программе |
|
|
|
Abs |
Модуль |
Abs(числ. выражение) |
|
|
|
Acos |
Арккосинус |
WorksheetFunction.Acos(числ. выражение) |
|
|
|
Asin |
Арксинус |
WorksheetFunction.Asin(числ. выражение) |
|
|
|
Atn |
Арктангенс |
Atn(числ. выражение) |
|
|
|
Cos |
Косинус |
Cos(числ. выражение) |
|
|
|
7
Окончание таблицы 3
Функция |
Возвращаемое значение |
Код в программе |
|
|
|
Exp |
Экспонента |
Exp(числ. выражение) |
|
|
Примеры: |
|
|
e записывается как exp(1) |
|
|
ea записывается как exp(a) |
|
|
|
Fix |
Целое значение (дробная |
Fix(числ. выражение) |
|
часть отбрасывается)* |
|
|
|
|
Int |
Целое значение (дробная |
Int(числ. выражение) |
|
часть отбрасывается)* |
|
|
|
|
Log10 |
Десятичный логарифм |
WorksheetFunction.Log10(числ. выражение) |
|
|
|
Ln |
Натуральный логарифм |
WorksheetFunction.Ln(числ. выражение) |
|
|
|
Sin |
Синус |
Sin(числ. выражение) |
|
|
|
Sqr |
Квадратный корень |
Sqr(числ. выражение) |
|
|
|
Tan |
Тангенс |
Tan(числ. выражение) |
|
|
|
* Различие между функциями Int и Fix состоит в том, что для отрицательного значения ар- гумента функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix – ближайшее отрицательное целое число, большее либо равное указанному. На- пример, функция Int преобразует –5.4 в –6, а функция Fix преобразует –5.4 в –5.
Таблица 4 – Функции преобразования форматов
Функци |
Возвращаемое значение |
|
Код в программе |
я |
|
|
|
|
|
|
|
Val |
Возвращает числа, содержащиеся в стро- |
Val (строковое выражение) |
|
|
ке, как числовое значение соответст- |
Примеры: |
|
|
вующего типа. Функция Val прекращает |
Val(”630091 Новосибирск”) воз- |
|
|
чтение строки на первом знаке, который |
вращает число 630091 |
|
|
она не может распознать как часть числa |
Val(”630 |
091 Новосибирск”) |
|
|
возвращает число 630091 |
|
|
|
Val(”630 |
and 091”) возвращает |
|
|
число 630 |
|
|
|
|
|
Str |
Представляет возвращаемое числовое |
Str (числовое выражение) |
|
|
значение как String. В качестве допус- |
Пример: |
|
|
тимого десятичного разделителя функ- |
Str(–459.65) возвращает –459.65 |
|
|
ция воспринимает только точку |
|
|
|
|
|
|
8