Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по VBA.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.34 Mб
Скачать

Функция InputBox

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

Полный синтаксис функции InputBox следующий:

InputBox (Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile, Context])

Аргументы Prompt (единственный обязательный аргумент), Title, HelpFile, Context - аналогичны уже рассмотренным одноименным аргументам функции MsgBox.

Аргумент Default - строковое выражение, использующееся как значение по умолчанию для пользовательского ввода.

Аргументы XPos, YPos - любые численные выражения. Эти аргументы задают координаты вывода диалогового окна на экране монитора. XPos - горизонтальное расстояние от левого края окна. YPos - вертикальное расстояние от верхнего края окна. Оба расстояния измеряются в твипах (1 твип = 1/20 точки = 0,0007 дюйма). Следует быть внимательным при использовании этих аргументов, т.к. при их больших значениях диалоговое окно может "уехать" за пределы экрана монитора.

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

При вызове InputBox можно использовать именованные аргументы.

Нельзя смешивать именованные аргументы с обычным списком аргументов в одном и том же вызове функции

Функции vba

Ниже представлены таблицы с кратким описанием наиболее часто используемых функций VBA.

Математические функции

N - означает любое численное выражение. Все аргументы функций являются обязательными, если не указано иначе.

Функция(аргумент)

Действие

Abs(N)

Возвращает абсолютное значение аргумента N

Atn(N)

Возвращает арктангенс N (радиан)

Cos(N)

Возвращает косинус N (радиан)

Exp(N)

Возвращает константу е (натуральный логарифм = 2.718282...), возведенную в степень N

Int(N)

Возвращает целую часть N. Не округляет число, а отбрасывает любую дробную часть. Если N отрицательное число, то возвращается ближайшее отрицательное целое меньшее, чем или равное N

Log(N)

Возвращает натуральный логарифм N

Rnd(N)

Возвращает случайное число: аргумент является необязательным.

Sgn(N)

Возвращает знак числа: -1, если N - отрицательное; 1, если N - положительное; 0, если N равно 0

Sin(N)

Возвращает синус N (радиан)

Sqr(N)

Возвращает корень квадратный из N. Если N является отрицательным числом - возвращается ошибка времени исполнения

Tan(N)

Возвращает тангенс N (радиан)

Операторы ветвления vba

До сих пор рассматривались процедуры и функции, которые VBA выполняет в линейном порядке - VBA начинает выполнение кода с первого оператора после строки объявления процедуры (функции) и продолжает выполнять каждый оператор построчно до тех пор, пока не будет достигнут оператор End Sub (End Function). Такой линейный алгоритм можно представить нижеследующей блок-схемой:

Однако довольно часто встречаются ситуации, когда необходимо, чтобы процедуры или функции выполняли различные действия при разных условиях. Такую ситуацию иллюстрируют следующие блок-схемы:

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

Простейшими операторами условного перехода являются операторы If..Then; If..Then..Else. Первый оператор позволяет выбирать единственную ветвь процедуры (левая блок-схема), тогда как второй дает возможность выбирать из двух альтернативных ветвей кода процедуры (правая блок-схема) на основе оценки того, является ли условие равным True или False.

СИНТАКСИС IF..THEN

Вариант 1:

If Condition Then Statements

Вариант 2:

If Condition Then

Statements

End If

Condition - логическое выражение;

Statements - один, несколько или ни одного оператора VBA.

Первый вариант требует написания оператора в одну строку, при этом в секции Statements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то операторы секции Statements пропускаются и выполняется код, следующий за этой секцией.

Ниже приведен листинг элементарного использования первого варианта написания If..Then:

А теперь - второй вариант:

Обратите внимание, что операторы секции Statements написаны с использованием отступа (используется табуляция). Это важный момент. Следует сразу приучать себя к подобному оформлению программного кода - это повышает его удобочитаемость и значительно облегчает поиск ошибок.

Синтаксис If..Then..Else

Вариант 1:

If Condition Then Statements Else ElseStatements

Вариант 2:

If Condition Then

Statements

Else ElseStatements

End If

Condition - логическое выражение;

Statements, ElseStatements - один, несколько или ни одного оператора VBA.

По аналогии с If..Then - первый вариант требует написания оператора в одну строку, при этом в секциях Statements и ElseStatements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то выполняются операторы секции ElseStatements.

Следует сказать, что блок операторов If..Then..Else (Вариант 2) легче читать и понимать. Поэтому, советую использовать именно этот вариант, даже если в секциях Statements и ElseStatements будет находиться по одному оператору.

Если требуется реализовать более сложное ветвление используется следующая запись оператора выбора If..Then..ElseIf..End If:

СИНТАКСИС:

If Condition Then

Statements

ElseIf Condition1 Then

Statements1

…………………………

………………………….

ElseIf ConditionN Then

StatementsN

Else

ElseStatements

End If

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего ключевым словом End If. Если же логическое выражение равно False, то выполняются проверка условия Condition1; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements1; затем VBA продолжает выполнение кода следующего ключевым словом End If. В противном случае проверяется условие Condition2 и т.д. пока не будет выполнена проверка условия ConditionN; если это логическое выражение равно True то выполняется оператор (операторы) секции StatementsN; затем VBA продолжает выполнение кода следующего ключевым словом End If. Если же логическое выражение равно False, то выполняются операторы секции ElseStatements.

Sub sample3()

Dim value As Long

Const MSG = "Вы ввели число, "

value = InputBox(prompt:="Введите число", Title:="Пример 4")

If value = 0 Then

MsgBox (MSG & "равное 0")

ElseIf value > 0 Then

MsgBox (MSG & "большее 0")

Else

MsgBox (MSG & "меньшее 0")

End If

End Sub