- •Макросы занятие 1. Макрорекодер и редакторVba.
- •Макросы занятие 2. Переменные, простые функции
- •Типы переменных
- •Макросы занятие 3. Условия, ветвление решения.
- •Макросы занятие 4. Циклы.
- •Макросы занятие 5. Функции для обработки текстов.
- •Макросы занятие 6. Объекты и их свойства.
- •Макросы занятие 7. Монопольные окна диалога.
- •Макросы занятие 8. Автоматизация для пользователя.
- •Макросы занятие 9 (на 8-12 часов). Разработка интерфейса пользователя.
- •Макросы занятие 10. Работа с массивами.
- •Макросы занятие 11. Работа с файлами.
- •Макросы занятие 12. Обязательные условия для выполнения индивидуальных заданий.
Типы переменных
Тип объявление, явное |
Тип объявление, неявное |
Хранит |
Требования к памяти |
Диапазон значений |
Integer |
% |
Целые числа |
2 байта |
от -32,768 до 32,767 |
Long |
& |
Целые числа |
4 байта |
(приблизительно) +/- 2 миллиарда |
Single |
! |
Числа с точкой |
4 байта |
+/_ от 1 Е-45 до ЗЕ38 |
Double |
# |
Числа с точкой |
8 байтов |
+/- от 5Е-324 до 1.8Е308 |
Currency |
@ |
Числа, имеющие 15 позиций (максимум) до десятичной точки и 4 цифры после |
8 байтов |
+/-9Е14 |
String |
$ |
Текстовая ин- формация |
1 байт |
До 65000 символов для строк с постоян- ной длиной и до 2 биллионов символов для динамических строк |
Byte |
Нет |
Целые числа |
1 байт |
от 0 до 255 |
Boolean |
Нет |
Логические значения |
2 байта |
True или False |
Date |
Нет |
Даты и время |
8 байтов |
1/1/100 до 12/31/9999 |
Object |
Нет |
Изображения и OLE-объекты |
4 байта |
Нет |
Variant |
Нет |
Любые из перечисленных типов данных |
16 бай- тов+1 байт на каждый символ |
Нет |
Объявить переменную можно локально в процедуре или в общей области модуля, в последнем случае переменная доступна всем процедурам (глобально). Если отдельные данные в программе не меняются, то их проще объявить константами:
Const Пуд=16.36
Переменным можно переприсвоить значение, а константам – нет.
Практическое применение.
Предположим, нам нужен набор функций по определению площади круга, длины окружности, объема шара. Аргументом будет радиус. Дополнительной переменной (можно константой) – значение .
Куда поместить функцию?
Конечно в модуль! Так как все макросы для любого листа вызываются именно оттуда. Нам же нужна функция, доступная к вызову из любого места.
Начиная работу в новом файле, придется сначала вставить в проект VBAмодуль, а затем в модуль поместить функцию. Это можно осуществить, используя меню редактораVBAInsert.
Итак функция вставлена. Практически любая функция обрабатывает один или несколько аргументов. Следовательно необходимо в описании функции описать и аргумент. Радиус может быть дробным, следовательно, это число вещественное.
Остается присвоить функции расчетное значение. Значение можно «добыть» из справочной системы, заглянув в раздел тригонометрических функций VBA.
Итог наших трудов:
Public Function площадь_круга(радиус!)
Dim pi#
pi=3.1415926535897932
площадь_круга=pi* радиус^2
End Function
Вызов функции осуществляется с помощью мастера функций на панели инструментов «Стандартная» из категории «Определенные пользователем». В окне диалога делаете ссылку на ячейку, содержащую значение радиуса и получаете результат.
Остальные функции выполняются аналогично.
Функции с текстовыми аргументами.
Функция шутка. Предположим есть две колонки мужских и женских имен. Необходимо составить фразы подобные «Вася+Люба= Любовь». Напомним, что с текстом возможна только операция сложения. Все текстовые символы заключаются в кавычки.
Результат:
Public Function шутка(имя1$, имя2$)
шутка =имя1 + ”+” + имя2 + ” = Любовь“
End Function
Функции со смешанными типами данных
Предположим в одной из колонок есть имена, во второй цифра, показывающая число полных лет. Необходимо составить подобную фразу «Кате 17 лет»
Поскольку текст и число относятся к разным типам данных, необходимо число преобразовать в текст.
Оператор Str(число) преобразует число в текст.
Оператор Val(текст) преобразует текст в число.
Результат:
Public Function возраст(имя$, лет!)
возраст =имя + Str(лет) + ” лет“
End Function
Самостоятельно выполнить следующие задания.
Функция. Длина окружности по радиусу.
Функция. Объем шара по радиусу.
Функция снаряд. По заданным: углу над горизонтом и начальной скорости вылета снаряда из ствола орудия определить дальность полета снаряда без учета сопротивления воздуха.