- •Содержание
- •Введение
- •1 Алгоритм и его свойства
- •2 Основные понятия VBA. Линейные алгоритмы
- •2.1 Элементы языка VBA
- •2.2 Типы данных VBA
- •2.3 Константы VBA
- •2.4 Переменные VBA
- •2.5 Выражения в VBA
- •2.6 Встроенные функции VBA
- •2.7 Оператор присваивания
- •3 Разветвляющиеся алгоритмы
- •3.1 Оператор IF и его формы записи
- •3.2 Типовые задачи разветвляющихся алгоритмов
- •4 Циклические алгоритмы
- •4.1 Оператор цикла For
- •Оператор цикла For Each
- •4.2 Оператор цикла Do
- •4.3 Вложенные циклы
- •5 Обработка массивов данных
- •5.1 Ввод-вывод массивов
- •Расположение данных в файле "dat.txt"
- •Расположение данных в файле "res.txt"
- •5.2 Программирование обработки одномерных массивов
- •5.3 Программирование обработки двумерных массивов
- •6.1 Лабораторная работа №1
- •6.2 Задание к расчетно-графической работе №1
- •6.3 Лабораторная работа №2
- •Обработка массивов данных на VBA
- •6.4 Задание к расчетно-графической работе №2
- •ЛИТЕРАТУРА
- •Окно проекта
- •Главное меню
- •Интеллектуальные возможности редактора кода
- •Операции сравнения
- •Конкатенация строк
- •Логические операторы VBA
- •Приоритеты выполнения операций при вычислении сложных выражений
- •Операторы пересчета
начинаются с букв xl, чтобы было понятно, что они определяются приложением Excel. Описание внутренних констант VBA, используемых в функции MsgBox, приведено в приложении Д.
2.4 Переменные VBA
Переменные - это объекты программы, которые могут принимать различные значения в процессе выполнения программы. Кроме значения и типа переменные имеют уникальное имя. Тип переменных можно задать явно оператором DIM, либо переменная будет иметь тип Variant и необходимый тип переменная получит в процессе выполнения программы, когда ей присвоят какое либо значение. Следует отметить, что явное определение типа переменной присваивает ей начальное значение «ноль» (либо «пустая строка», если это строковая переменная). Неинициализированная переменная с типом Variant или результат выражения, содержащий неинициализированную переменную типа Variant, имеют неопределенное значение («Empty») и не могут использоваться в программе, пока им не присвоят какое либо значение.
Синтаксис оператора DIM:
DIM имя_переменной As тип_переменной .
Допустимо в одном операторе присваивать типы нескольким переменным, задавая имена переменных и их типы через запятую.
Пример.
DIM X As Single , Y As Single , Kappa As Integer
После выполнения данного оператора переменные x и y получают числовой тип Single и нулевые начальные значения, а переменная с именем Kappa получает тип целого числа Integer и так же нулевое значение.
Результат работы следующего оператора
DIM x,y As Single
26
зависит от версии пакета Microsoft Office. В десятом офисе результат будет таким же, как написано выше. В версиях Microsoft Office более ранних версий, переменная x будет иметь тип Variant и неопределенное значение Empty .
По умолчанию строковая или текстовая переменная (String) является массивом переменной длины, который содержит символы. Однако текстовая переменная может быть определена и фиксированной длины. В следующем примере объявляется символьный массив размером в 16 символов:
Dim Str As String*16
В этом случае, если присвоить переменной Str строку длиной более 16 символов, то она будет усечена.
Оператор Dim, в котором перечислены имена переменных без указания их типов, присваивает этим переменным тип Variant и неопределенное значение Empty.
Во многих языках программирования (Паскаль, Си) не позволяют использовать переменные, имена которых не объявлены программистом. Чтобы установить режим, при котором VBA требует явного объявления имен всех переменных в модуле, необходимо добавить команду Option Explicit в область объявлений модуля, то есть в начало модуля до любого объявлениями переменных или процедур. Такие команды, как Option Explicit, называются директивами компи-
лятора (compiler directives).
Команда Option Explicit действует только на модуль, в котором она появляется. Если проект, содержащий этот модуль, содержит также другие модули, внутри них не действует команда
Option Explicit. Необходимо включать команду Option Explicit в ка-
ждый модуль, для которого требуются явные объявления переменных.
27
2.5 Выражения в VBA
Выражения образуются из операндов, знаков операций, (возможно) скобок и задают правило вычисления значения этого выражения. В зависимости от типа вычисляемого значения различают выражения символьные, логические и арифметические. Операндами – объектами, участвующими в операциях, – могут быть константы, переменные, функции.
Символьные выражения VBA используют одну единственную операцию конкатенации (соединения) для символьных операндов, например, stroka1&stroka2 . В некоторых случаях знак операции конкатенации «&» может быть заменен символом плюс. Тип данных результата конкатенации строк – это всегда тип String. Иные действия над строками символов выполняются с помощью встроенных символьных функций.
Логические выражения VBA используют логические операции для операндов, принимающих значения ложь и истина, например, устанавливают истинность высказывания 0<x<1, записываемого в виде 0<x AND x<1. Они будут рассмотрены позже в разделе «Алгоритмы ветвления».
Арифметические выражения VBA включают операнды число-
вого типа, арифметические операции, (возможно) круглые скобки и задают формулу, вычисляемую по правилам VBA. Знаки операций выполнения действий приведены в таблице 2.2, в таблице 2.3 приведены приоритеты арифметических действий.
28
Таблица 2.2 – Обозначения арифметических операций
Знак |
Синтаксис |
|
Имя/Описание |
|
+ |
|
|
|
|
N1 |
+ N2 |
|
Сложение. Прибавляет N1 к N2 |
|
– |
|
|
|
|
N1 |
– N2 |
|
Вычитание. Вычитает N2 из N1 |
|
* |
|
|
|
|
N1 |
* N2 |
|
Умножение. Умножает N1 на N2 |
|
/ |
|
|
|
|
N1 |
/ N2 |
|
Деление. Делит N1 на N2 |
|
|
|
|
|
|
|
|
|
|
Целочисленное деление. У результата деления |
\ |
Nl \ N2 |
|
N1 на N2 отбрасывается дробная часть. Перед |
|
|
|
|
|
операцией N1 и N2 округляются до целого числа |
|
|
|
|
|
|
|
|
|
Деление по модулю. N1 делится на N2, а резуль- |
Mod |
N1 Mod N2 |
тату присваивается остаток операции деления. |
||
|
|
|
|
Перед операцией N1 и N2 округляются до целого |
|
|
|
|
|
^ |
N1 |
^ N2 |
|
Возведение в степень. Возводит N1 в степень N2 |
|
|
|
|
|
Таблица 2.3 Старшинство арифметических операций. |
||||
|
|
|||
Знак операции |
Пояснения |
|||
|
|
|
|
|
|
^ |
|
Возведение в степень (наивысший приоритет) |
|
|
|
|
|
|
|
– |
|
Унарный минус (изменение знака числа) |
|
|
|
|
||
|
*, / |
Умножение и деление имеют равные приоритеты |
||
|
|
|
|
|
|
\ |
|
Целочисленное деление |
|
|
|
|
||
|
Mod |
Остаток от деления нацело |
||
|
|
|
||
|
+, – |
Сложение и вычитание имеют равный приоритет |
||
|
|
|
(низший приоритет) |
|
|
|
|
|
|
Действия одного ранга (старшинства) выполняются последовательно слева направо. Действия в скобках выполняются в первую очередь. Обозначение и старшинство всех допустимых действий в VBA приведено в приложении Б.
29