Файл: Е. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.12.2023
Просмотров: 110
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Функции проверки
Функция | Результат |
IsArray | Является массивом |
IsDate | Является датой |
IsEmpty | Является неопределенной |
IsError | Является ошибкой |
IsNull | Является пустой |
IsNumeric | Является записью числа |
IsObject | Является объектом |
4. Наибольший интерес пока что представляет функция IsNumeric, которая определяет, является ли константа записью числа.
Пример:
-
A=”53”
Rez1=IsNumeric (A)
B=”45,15”
Rez2=IsNumeric (B)
В результате выполнения фрагмента программы переменная Rez1 примет значение True, а переменная Rez2 – значение False.
Функцию IsEmpty можно применить, например, для определения пустой ячейки Microsoft Excel:
B=IsEmpty (Cells(1, 1))
Если в ячейку А1 не были записаны какие-либо данные, то функция вернет значение True, иначе False.
В вычислениях можно использовать встроенные функции Microsoft Excel. В этом случае ссылка на встроенную функцию имеет вид:
V = Application.WorksheetFunction.Функция (Аргумент)
Здесь Функция – конкретная функция из списка функций, Аргумент – переменная, константа или ячейка, в которую записано значение.
Пример вычисление длины окружности:
S=2*Application.WorksheetFunction.PI()*R
Допустимо записывать выражение в виде:
S=2*WorksheetFunction.PI()*R
Пример использование функций логарифмов:
Cells(5, 1) = WorksheetFunction.Log10(120)
Здесь вычисляется десятичный логарифм числа 120.
Cells(6, 1) = WorksheetFunction.Log(10, 4)
Здесь вычисляется логарифм числа 10 по основанию 4.
9. Арифметические выражения VBA
Совместимость типов данных VBA в выражениях
Арифметические выражения состоят из констант, переменных, элементов массивов, стандартных функции и знаков арифметических действий.
В арифметических выражениях используются следующие знаки арифметических действий: + (сложение), - (вычитание), * (сложение), / (деление вещественных чисел), ^ (возведение в степень), \ (целочисленное деление, имеющее результатом целую часть частного), mod (остаток от деления).
Порядок выполнения арифметических выражений следующий:
-
возведение в степень; -
умножение и деление в порядке следования; -
целочисленное деление; -
вычисление остатка; -
сложение и вычитание в порядке следования.
Если в выражении присутствует стандартная функция, то в первую очередь вычисляется ее значение.
Порядок вычислений можно изменить с помощью скобок ().
Примеры:
14/5*2=2,8
14\5*2=14\10=1
9^1/2=4,5
9^(1/2)=3
10 mod 4=2
Все выражения имеют результатом одно значение, имеющее один из типов данных, рассмотренных выше.
Выражения могут также иметь результатом одно из специальных значений Empty или Null.
Не все типы данных совместимы друг с другом, и нельзя использовать несовместимые типы данных в одном и том же выражении. Например, нельзя произвести арифметическое сложение над числом и строкой. При обработке выражения, содержащего различные типы данных, VBA сначала пытается устранить любое различие типов, преобразуя значения в выражении в совместимые типы данных. Если устранить какие-либо различия преобразованием типов не удается, действие прекращает выполняться.
VBA преобразует численные типы данных в выражении в тип наибольшей точности, который затем дает результату выражения. Например, если операндами выражения являются числа 10 (Integer) и 20.89 (Single) – результат выражения будет иметь тип Single.
Но если переменной типа Integer попытаться присвоить численное выражение типа Single, то VBA произведет округление до необходимой точности что может привести к ошибкам выполнения программы. Например, если описать переменную h, имеющую значение 0.3, типом Integer, то значение автоматически округлится до нуля.
Кроме того, в выражениях возможны неочевидные ошибки типа.
Пример:
Dim a As single, I As Byte, j As Byte
I=1
J=3
A=i-j
Результатом переменной А будет отрицательное число, которое не может относиться к типу Byte. Несмотря на то, что переменная
А описана типом, позволяющим определить отрицательное число, появится сообщение об ошибке.
10. Оператор присваивания (=)
Оператор присваивания используется для присваивания результата выражения переменной.
Оператор присваивания имеет вид:
V = выражение
Здесь V – любая переменная VBA, выражение – любое выражение VBA, знак = означает присваивание.
Внимание! В результате указанного оператора, переменной V присваивается значение выражения, не путать с проверкой условия-равенства!
При выполнении оператора присваивания VBA сначала вычисляет выражение справа от оператора присваивания, а затем сохраняет результат выражения в переменной, имя которой находится слева от знака равенства.
X = 5 + 7
Y = X + 5
Z = X – Y
A = B
I = I + 2
Поясним последний пример. В результате выполнения указанного оператора, переменной I присваивается значение, составляющее сумму двух чисел: числа 2 и значения, которое переменная I имела перед выполнением оператора присваивания.
Например, в результате выполнения двух операторов
A=5
A=A+7
переменная А будет содержать значение 12 (5+7).
11. Логические выражения
Логические выражения состоят из логических операндов и логических операций. К логическим операндам относятся логические константы, логические переменные, логические отношения.
Логические отношения включают в себя знаки =, <, <=, >, >=, <>.
Логические операции могут выполняться над одним или двумя операндами. На одним операндом выполняется операция логического отрицания (not), изменяющая значение операнда на противоположное, т.е. результатом логического отрицания является значение True, если операнд имеет значение False и наоборот.
Над двумя операндами производятся следующие логические операции: конъюнкция (логическое умножение) – and, дизъюнкция (логическое сложение) – or, исключение – xor, эквивалентность – eqv, импликация – imp. Результаты этих операций приведены в табл. 5.
Таблица 5
Результаты логических операций
A | B | not A | A and B | A or B | A xor B | A eqv B | A imp B |
True | True | False | True | True | False | True | True |
True | False | False | False | True | True | False | False |
False | True | True | False | True | True | False | True |
False | False | True | False | False | False | True | True |
Иначе говоря:
– конъюнкция: если А и В имеют значение True, то результат – True, иначе – False;
– дизъюнкция: если хотя бы один из операндов имеет значение True, то результат – True, иначе – False;
– исключение: если А имеет значение True или В имеет значение True
, то результат – True, иначе – False;
– эквивалентность: если А имеет такое же значение что и В, то результат – True, иначе – False;
– импликация: если А имеет значение True и В имеет значение False, то результат – False, иначе – True.
Пример:
(5<7) and (4>3) and (5=6)
Результатом будет False. Независимо от количества операндов результатом логической операции and будет True только в том случае, когда все операнды выражения будут иметь значение True. В любом другом случае результатом будет False.
Пример:
(5<7) or (4>3) or (5=6)
Результатом будет True. Независимо от количества операндов результатом логической операции or будет всегда True в том случае, если хотя бы один из операндов выражения будет иметь значение True, иначе результатом будет False.
Пример:
((5<7) and (4>3)) or (5=6)
Результатом будет True. Результатом операции xor является значение True, если операнды имеют разные значения, иначе – False.
Пример:
((5<7) and (4>3)) or not (5=6) xor (5=5)
Результатом будет False. Результатом операции eqv является значение True, если операнды имеют одинаковые значения, иначе – False.
Пример:
((5<7) and (4>3)) or not (5=6) eqv (5=5)
Результатом будет True. Результатом операции imp будет False только в том случае, если операнд А имеет значение True, а операнд B – значение False, во всех остальных случаях – True.
Пример:
((5<7) and (4>3)) or not (5=6) imp (5=5)
Результатом будет True.
Внимание! Сравнение выполняется корректно, даже если операнды в логических отношениях относятся к разным числовым типам.
Пример:
Dim a As Byte, d As Single
a = 7
d = 7
If a = d Then Cells(1, 1) = "Yes" Else Cells(1, 1) = "No"
Результатом будет значение «Yes».
Однако нельзя сравнивать данные несовместимых типов, например, числа и строки, или строки и даты.
Если один или оба операнда в выражении сравнения являются переменными типа Variant, VBA пытается преобразовать тип Variant в какой-либо совместимый тип.
Порядок вычисления логических выражений следующий: