Главная страница

Е. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов


Скачать 3.08 Mb.
НазваниеЕ. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов
Дата17.05.2023
Размер3.08 Mb.
Формат файлаdoc
Имя файлаVBA.doc
ТипДокументы
#1138184
страница3 из 11
1   2   3   4   5   6   7   8   9   10   11

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 в какой-либо совместимый тип.

Порядок вычисления логических выражений следующий:

  1. вычисляются арифметические выражения, входящие в состав логических отношений;

  2. вычисляются значения логических выражений;

  3. выполняется операция not;

  4. выполняется операция and;

  5. выполняется операция or;

  6. выполняется операция xor;

  7. выполняется операция eqv.


12. Простейший ввод-вывод
Ввод данных в VBA можно осуществлять разными способами:

  1. записать исходные данные в виде констант в начале программы;

  2. присвоить переменным значения в начале программы с помощью оператора присваивания;

  3. с помощью функции InputBox;

  4. непосредственным вводом данных в ячейки рабочего листа Microsoft Excel с последующим считыванием.

Два первых способа обычно используются в том случае, если количество исходных данных не слишком велико.
Рассмотрим подробнее два последних способа.

Функция InputBox имеет вид:

InputBox (Приглашение[,Заголовок] [,Значение_по_умолчанию] [, XPos] [, YPos])

Обязательным параметром является только приглашение, определяющие пояснительный текст.

Пример (рис. 5):

x=InputBox(“введите x”)


Рис. 5. Окно, выполняющее код, записанный в примере
В поле функции вводится значение переменной, после чего следует щелкнуть кнопку OK.

Внимание! Результат функции InputBox будет иметь строковый тип, поэтому если по смыслу задачи вводимое значение должно относиться к другому типу, то необходимо применить функции преобразования типа.

Так, например, если в предыдущем примере x должна иметь числовой тип, то следует записать оператор присваивания в одном из следующих видов:

x=Cint(InputBox(“введите x”))

или

x=Csng(InputBox((“введите x”))

или

x=Val(InputBox((“введите x”))

В первом случае значение x приводится к типу Integer, во втором – к типу String, а в третьем – к тому типу, которым описана переменная x в операторе Dim ранее. Если же переменная x не была описана, то она принимает тип Variant.

Наиболее удобным способом является четвертый – ввод данных с листа Microsoft Excel. В этом случае ввод данных реализуется в виде оператора присваивания:

V=Cells(k,n)

Здесь V – имя переменной, k – номер строки ячейки, n – номер столбца. Например, оператор

X=Cells(5,3)

вводит значение для переменной X из ячейки С5, а оператор

Y=Cells(1,4)

из ячейки D1

Вывод результатов может осуществляться двумя способами:

  1. с помощью функции MsgBox;

  2. непосредственной записью результатов в ячейки листа Microsoft Excel.


Функция MsgBox имеет формат

MsgBox (V[, Buttons] [, Title] [, HelpFile, Context])

Единственным обязательным аргументом является аргумент V, который может быть любым строковым выражением и содержит информацию, которая выводится в диалоговом окне. Все остальные аргументы – необязательные.

Аргумент Title – строка для заголовка диалогового окна.

Аргумент HelpFile – строковое выражение, содержащее имя справочного файла Windows (который уже должен быть создан).

Аргумент Context – численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.

Аргумент Buttons – численное выражение, которое задает количество и тип кнопок в диалоговом окне. Также указывает кнопку по умолчанию и, содержит ли это диалоговое окно стандартные значки Windows для предупредительных сообщений и запросов пользователя.

Аргументы-константы функции MsgBox представлены в следующей табл. 6.

Таблица 6

Аргументы-константы функции MsgBox

Константа

Назначение

vbAbortRetryIgnore

Отображает командные кнопки Стоп, Повтор, Пропустить

vbApplicationModal

Для продолжения работы с приложением пользователь должен ответить на запрос диалогового окна

vbCritical

Отображается окно с предупредительным значком критической ошибки

vbDefaultButton1

vbDefaultButton2

vbDefaultButton3

vbDefaultButton4

Номер командной кнопки в диалоговом окне являющейся кнопкой по умолчанию

vbExclamation

Желтый знак вопроса. Используется для отображения важной информации не требующей ответа

vbInformation

Отображает значок информации. Используется для отображения справочной информации

vbMsgBoxHelpButton

Добавляет к диалоговому окну кнопку Справка. При щелчке на этой кнопке открывается файл, который задан в аргументе HelpFile, в разделе, заданном аргументом Context

vbOKCancel

Отображает кнопки ОК и Отмена

vbOKOnly

Отображает только кнопку ОК – аналогична пропуску аргумента Buttons

vbQuestion

Отображает значок вопроса. Используется когда надо задать пользователю какой-то важный вопрос

vbRetryCancel

Отображает кнопки Повтор и Отмена

vbSystemModal

Диалоговое окно всегда остается впереди других окон пока не будет закрыто

vbYesNo

Отображает кнопки Да и Нет

vbYesNoCancel

Отображает кнопки Да, Нет и Отмена


Возвращаемые значения-константы функции MsgBox представлены в табл. 7.

Таблица 7

Возвращаемые значения-константы функции MsgBox

Константа

Назначение

vbAbort

Пользователь выбирает кнопку Стоп

vbCancel

Пользователь выбирает кнопку Отмена

vbIgnore

Пользователь выбирает кнопку Пропустить

vbNo

Пользователь выбирает кнопку Нет

vbOK

Пользователь выбирает кнопку ОК

vbRetry

Пользователь выбирает кнопку Повтор

vbYes

Пользователь выбирает кнопку Да


Следует отметить, что MsgBox может использоваться в двух режимах – как процедура и как функция. Если MsgBox используется исключительно для вывода, то она имеет вид процедуры.

Пример:

SubPr1()

X=5:Y=2

Z=X+Y

MsgBox(z)

EndSub

При выполнении данного примера появляется форма имеющая вид, представленный на рис. 6.


Рис. 6. Окно, выполняющее код, записанный в примере
В качестве параметра V можно использовать арифметическое выражение; так, допустимо в том же примере записать

MsgBox(x+y)

Более интересным является использование MsgBox в качестве функции, возвращающей пользователю некоторое значение-ответ. В этом случае на форме должны размещаться кнопки.

Пример:

Sub l1()

MsgBox (Now())

End Sub

Результатом выполнения процедуры MsgBox является вывод системной даты, которая определяется стандартной функцией Now, не имеющей аргументов. Следует отметить, что в VBA параметр процедуры MsgBox автоматически преобразуется к строковому типу. Например:



Рис. 7. Окно, выполняющее код, записанный в примере
В данном примере системная дата приведена к строковому типу с помощью функции CStr, а системное время, определяемое функцией Time, – нет. Тем не менее, программа выполняется правильно (рис. 7).

13. Форматирование выводимых данных
Форматирование применяется в первую очередь при выводе вещественных чисел и позволяет округлять их до нужного количества знаков.

Форматирование осуществляется с помощью функции Format, имеющей вид:

Format(Var,”000.0000”)

или же

Format(Var,”###.####”)

Здесь Var– имя переменой-результата, знак 0 означает обязательный знак, знак # – необязательный.

Пример:

A=5,3

Cells(1,1)=format(A,”00.000”)

Результатом будет 05.300

Пример:

A=5,3

Cells(1,1)=format(A,”##.00#”)

Результатом будет 5.30
1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта