Выражения состоят из операндов (значений, констант, переменных, функций), соединенных с помощью операций.
Для изменения порядка выполнения операций могут быть использованы круглые скобки. Выражения бывают арифметические, логические и строковые.
В качестве операндов могут быть использованы константы, переменные, функции.
Константы
Операнды Переменные
Массивы
Функции
Арифметические
Отношения
Операции Логические
Текстовые
В зависимости от операций, использующихся в выражении, последние подразделяются на арифметические, логические и текстовые.
А) Арифметические операции:
+ - сложение;
- - вычитание;
* - умножение;
/ - деление;
\ - целочисленное деление;
Mod – остаток от целочисленного деления;
^ - возведение в степень
Например:
Dim x As Double, y As Double, z As Double
х=5 : y=3
Z=x+y
Z=x-y
Z=x*y
Z=x/y
Z=x\y ‘ целочисленное деление z=1
Z=x mod y ‘ остаток от целочисленного деления z=2
Z=x^y
Арифметические выражения состоят из операндов и математических операций.
Пример. Записать математические выражения в виде арифметических выражений на VBA
Математическое выражение | Выражение на VBA |
x2-7x+6 | x^2-7*x+6 |
![]() ![]() | (Abs(x)-Abs(y))/(1+Abs(x*y)) |
ln ![]() | Log(Abs((y-Sqr(Abs(x)))*(x-y/(z+(x)^2/4)))) |
Б) Операции отношения
>, <, >=, <=, <>, =
Например:
Dim x As Double, y As Double, z As Double, b As Boolean
X=5 : y=3
B= (x<y)
B= (x>y)
B= (x<=y)
B= (x>=y)
B= (x<>y)
B= (x=y)
В) Логические операции
Операция | Наименование |
Not And Or | Отрицание Конъюнкция (умножение) Дизъюнкция (сложение) |
Значения элементарных логических выражений приведены в таблице ниже
Таблица – Результат логических операций
A | B | not A | A and B | A or B | A or B |
True True False False | True False True False | False False True True | True False False False | True True True False | False True True False |
Логические выражения состоят из операндов и операций отношения и логических операций.
Результатом вычисления логического выражения может быть одно из двух логических значений: True (истина ) или False (ложь).
Г) Текстовые операции
Сложение строк. Для сложения строк допустимо использование операции +, но предпочтительнее, во избежание путаницы, применять операцию со знаком &
Д) Приоритеты операций
VBA выполняет операции в соответствии с их приоритетами, что обеспечивает однозначность в трактовании значений выражений
Ø Операции в скобках
Ø Вычисление функций
Ø Возведение в степень
Ø Смена знака
Ø *, /, \, mod
Ø +, -
Ø >,>=, <, <=, <>, =
Ø Not
Ø And
Ø Or
\
Встроенные функции VBA
В VBA имеется большой набор встроенных функций и процедур, использование которых существенно упрощает программирование. Эти функции можно разделить на следующие основные категории:
- Математические функции
- Функции проверки типов
- Функции преобразования форматов
- Функции обработки строк
- Функции времени и даты
Ниже рассмотрены основные функции из этих категорий.
Математические функции
В VBA имеется большой список математических функций, позволяющих произвести любые вычисления.
Функция | Возвращаемое значение | |||||
Abs (число) Atn (число) Cos (число) | Модуль (абсолютная величина) числа Арктангенс Косинус | |||||
Ехр (число) | Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень | |||||
Log (число) | Натуральный логарифм | |||||
Rnd Rnd (число) | Возвращает случайное число из интервала [0,1] Если число меньше нуля, то Rnd возвращает каждый раз одно и то же число, используя аргумент в качестве опорного числа; если число больше нуля или аргумент опущен, то — следующее случайное число в последовательности; если число равняется нулю, то — случайное число, возвращенное при предыдущем вызове этой функции. Public Sub Процедура_RND() x = Rnd(-2) MsgBox "x=" & x End Sub Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента Public Sub Процедура_RND() Randomize x = Rnd(-2) MsgBox "x=" & x End Sub | |||||
Sgn (число) | Знак числа Public Sub Процедура_RND() Randomize x = Rnd(-2) MsgBox "x=" & x z = -5 y = Sgn(z) MsgBox "y=" & y End Sub | |||||
Sin (число) | Синус | |||||
Sqr (число) | Квадратный корень из числа | |||||
Tan (число) | Тангенс | |||||
Fix (число) и Int (число) | Обе функции, int и Fix, отбрасывают дробную часть числа и возвращают целое значение. Различие между функциями int и Fix состоит в том, что для отрицательного значения аргумента число функция int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix — ближайшее отрицательное целое число, большее либо равное указанному Например: Int(2.3)=2 fix(2.3)=2 Int(2.8)=2 fix(2.8)=2 Int(-2.3)=-3 fix(-2.3)=-2 Int(-2.3)=-3 fix(2.3)=-2 | |||||
Round(E[,N]) | Округляет число, округленное до определенного количества (N) десятичных знаков Public Sub as1() Dim d As Double d = 2.567 MsgBox Round(d, 1) 'выведет 2.6 End Sub | |||||
Примеры создания последовательности случайных чисел
1.
Public Sub случайное_число()
Randomize
For i = 1 To 3
s = Rnd
MsgBox "Случайное число=" & s
Next i
End Sub
Public Sub qqq()
Dim mv, ms As String
Randomize
ms = " "
For i = 0 To 9
mv = Int((6 * Rnd) + 1)
ms = ms & " " & mv
Next
MsgBox ms
End Sub
Преобразование строки в число и обратно осуществляют следующими функциями.
Val (строка) | Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа | ||
Str (число) | Возвращает значение типа variant (String), являющееся строковым представлением числа | ||
В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr, описанную ниже.
Функции преобразования типов
В VBA имеются следующие функции преобразования типов выражений из данного в указанный.
Функция | Тип, в который преобразуется выражение |
CBool (Выражение) | Boolean |
CByte (Выражение) | Byte |
CCur (Выражение) | Currency |
CDate (Выражение) | Date |
СDbl (Выражение) | Double |
CDec (Выражение) | Decimel |
CInt (Выражение) | Integer |
CLng (Выражение) | Long |
CSng (Выражение) | Single |
CVar (Выражение) | Variant |
CStr (Выражение) | String Public Sub Процедура_RND() Randomize x = Rnd(-2) MsgBox "x=" & x z = -5 y = Sgn(z) MsgBox "y=" & y c = Val(x) MsgBox "c=" & c b = Str(x) MsgBox "b=" & b v = CStr(x) MsgBox "v=" & v End Sub |
Функции обработки строк
В VBA имеются следующие функции обработки строковых выражений.
Функция | Возвращаемое выражение | ||
Asc (строка) | Возвращает код символа, соответствующий первой букве строки Public Sub zx() Dim ms As String d = Asc("Привет") MsgBox "d=" & d End Sub d=207 | ||
Chr (число) | Возвращает строку из одного символа, соответствующего коду числа, т.е возвращает символ, которому соответствует число d = Chr(207) MsgBox "d=" & d d= П | ||
Mid(S,N1[,N2]) | Возвращает строку, содержащую N2 (если указано, если не указано - то до конца строки) символов, начиная с позиции N1. Первое_слово=mid(“Mid Function Examle”,1,3) ‘Первое_слово=“Mid” | ||
Len(S) | Возвращает число символов строки S(включая начальные и конечные пробелы). | ||
Left(S,N) | Возвращает подстроку, состоящую из заданного N числа символов, начиная с левого края строки S. S=”Мама мыла раму” S1=Left(S,4) ‘S1=Мама | ||
Right(S,N) | Возвращает подстроку, состоящую из заданного N числа символов, начиная с правого края строки S. S=”Мама мыла раму” S1= Right (S,4) ‘S1= раму | ||
InStr([N,]S1,S2) | Возвращает позицию положения строки S2 в строке S1. При наличии N поиск начинается с позиции N. s1=”Abcdef” i= InStr(s1,”cd”) ‘i=3 s1=”Abcdcdef” i= InStr(4,s1,”cd”) ‘i=5 s1=”Abcdef” i= InStr(s1,”k”) ‘i=0 Если S2 в S1 не обнаружено, то результат = нулю | ||
Оформление программного кода
Комментарии
В программный код можно включит любой произвольный текст, т.е. комментарии. Комментарии, поясняющие текст программы, делают ее более читаемой. Текст, следующий в программе за символом “ ‘ “ вплоть до конца строки, игнорируется компилятором и представляет собой комментарии.