Операции, выражения, операторы
Операции. В VBA существуют следующие типы операций:
· арифметические операции, используемые для выполнения математических вычислений: ^, *, /, \, Mod, +, -.Здесь \ - Возвращает результат целого деления двух чисел, Mod –возвращает остаток при целом делении двух чисел (значение по модулю).
· операции сравнения, используемые для выполнения операций сравнения
· < , > , <=, >= , = , <> ;
· логические операции, используемые для выполнения логических операций
And –Возвращает результат конъюнкции (логического И) для двух выражений с операциями сравнения, либо выполняет поразрядное сравнение двух числовых выражений:
Eqv –Используется для проверки логической эквивалентности двух выражений с операциями сравнения, либо выполняет поразрядное сравнение двух числовых выражений:
Imp –Выполняет операцию логической импликации для двух выражений с операциями сравнения, либо выполняет поразрядное сравнение двух числовых выражений:
Not –Выполняет над выражением операцию логического отрицания, а также поразрядное изменение значений каждого разряда переменной:
Or –Выполняет операцию логического ИЛИ (сложения) для двух выражений:
Xor –Выполняет операцию исключающего ИЛИ для двух выражений:
· операция конкатенациисимвольных значений друг с другом с образованием одной длинной строки:
& –используется для слияния двух строковых выражений.
Выражения – предназначаются для выполнения необходимых вычислений, состоят из констант, переменных, функций (например, exp(x)), объединенных знаками операций.
Выражения записываются в виде линейных последовательностей символов(без подстрочных и надстрочных символов и т.д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.
Различают выражения арифметические, логические и строковые.
· Арифметические выражения служат для определения одного числового значения. Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=π/2 – единице.
· Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения – "истина" или "ложь" (да или нет). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r, определяющее принадлежность точки с координатами (x,y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения – "истина", а при x=2, y=2, r=1 – "ложь".
· Значения строковых выражений – тексты. В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А & В означает присоединение строки В к концу строки А. Если А = "куст ", а В = "зеленый", то значение выражения А&В есть "куст зеленый".
Операторы (команды). Оператор – это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав операторов входят:
· ключевые слова;
· данные;
· выражения и т.д.
Операторы подразделяются на исполняемые и неисполняемые. Неисполняемые операторы предназначены для описания данных и структуры программы, а исполняемые – для выполнения различных действий (например, оператор присваивания, операторы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и др.).
Операторы описания
Объявление переменной производится одним из операторов Dim, Static, Private, Public, за которым следует имя переменной и необязательная часть с ключевым словом As, после которого задается тип переменной, например Dim name [As type]. Оператор Publicиспользуется только вне модуля, в его общей части и делает описываемую переменную доступной из всех процедур всех модулей проекта. Оператор Private служит для объявления переменной уровня модуля, доступной только процедурам данного модуля. Можно использовать также оператор Dim, но применение Private предпочтительнее как противоположное Public.
Переменные могут быть объявлены внутри процедуры операторами Dim или Static. Такие переменные называют также локальными, поскольку доступны только в той процедуре, в которой они объявлены. Данное свойство (область видимости) позволяет использовать одинаковые имена переменных в разных процедурах, не опасаясь конфликтов или случайных изменений значений переменных. Время жизни локальных переменных, объявленных с помощью оператора Dim равно времени работы процедуры и по ее окончании значения таких переменных теряются.
Переменные, объявленные с помощью оператора Static, сохраняют свои значения в течение всего времени выполнения приложения. При повторном входе в процедуру, где описана такая переменная, ее значение сохраняется.
Операторы Public и Private можно применять при описании констант и процедур, что позволяет указать их область видимости.
Операторы присваивания
Инструкция Let присваивает значение выражения переменной или свойству:
[Let] имяПеременной = выражение
Явное использование ключевого слова Let необязательно.
Значение выражения может быть присвоено переменной, только если оно имеет совместимый с этой переменной тип данных. Невозможно присвоить строковое выражение числовой переменной или числовое выражение строковой переменной. Такая попытка приведет к ошибке во время компиляции.
Для ввода значений переменных в программу применяют функцию InputBox(сообщение [, заголовок] [, значение по умолчанию] [, координата x] [, координата y]). Эта функция отображает диалоговое окно, содержащее окно ввода, кнопки ОК и Отмена, сообщение (подсказку для ввода) и (необязательно) заголовок окна, значение, вводимое по умолчанию, координаты окна по горизонтали и вертикали в твиках. Заметим, что функция InputBox всегда (даже при нажатии кнопки Отмена) возвращает значение строкового типа, поэтому вызов ее должен иметь вид:
name = InputBox("Введи адрес ячейки", "Ввод", "a1", 100, 200)
Для отображения значений переменных в режиме нормальной работы необходимо ввести в тело программы вызов функции MsgBox (сообщение, [кнопки, заголовок]). Эта функция отображает диалоговое окно, содержащее сообщение длиной до 1024 символов, в которое с помощью операции конкатенации можно включить значение переменных, а также (необязательно) кнопки для реакции на отображения окна (по умолчанию только кнопка ОК) и заголовок окна (строковое выражение). Пример:
MsgBox "Значение val=" & val
Заметим, что VBA не имеет встроенных функций ввода/вывода в документ. Поэтому для вывода значений выражений и переменных в активный документ приходится создавать пользовательские процедуры.
Функции обработки строк
В VBA имеется несколько функций по работе со строковыми выражениями.
Функции Asc(строка) и Chr(код) позволяют получить ASCII-код начальной буквы строки и, наоборот, по ASCII-коду получить соответствующую букву. Для функции Chr() код может принимать значения от 0 до 255. Значения от 0 до 31 соответствуют управляющим кодам (например, Chr(13) вернёт символ перехода на новую строку). Для обозначения некоторых часто употребляемых клавиш в VBA имеются встроенные константы, например, для клавиши <Enter> – vbCr, для клавиши <Tab> – vbTab, для клавиши <Backspace> – vbBack.
Примеры:
debug.Print Asc("F")
debug.Print Chr(97)
a
Msgbox "Этот текст расположен" & vbCr & "в две строки".
Функция Len(строка) определяет длину строки.
Пример:
debug.Print Len("http://www.tusur.ru/")
Функции Left(строка, количество) и Right(строка, количество) возвращают подстроки, состоящие из заданного количества соответственно первых и последних символов данной строки. Функция Mid(строка, позиция, количество) возвращает подстроку, содержащую заданное количество символов, начиная с указанной позиции.
Пример:
debug.Print Left("http://www.tusur.ru", 4)
http
debug.Print Right("http://www.tusur.ru", 2)
ru
debug.Print Mid("http://www.tusur.ru", 12, 5)
tusur
Функции InStr([старт], строка1, строка2, [сравнение]) и InStrRev(строка1, сторка2, [старт], [сравнение]) возвращают позицию первого вхождения строки2 в строку1, начиная соответственно с ее начала и с конца. Если вхождения нет, то возвращается 0. Параметр сравнение указывает способ сравнения строк, значения: 0 или vbBinaryCompare для двоичного сравнения, 1 или vbTextCompare для посимвольного сравнения без учета регистра.
debug.Print InStr(1, "Microsoft Office", "office", vbTextCompare)
debug.Print InStr(1, "Microsoft Office", "office", vbBinaryCompare)
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|