Файл: Е. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.12.2023
Просмотров: 124
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
-
вычисляются арифметические выражения, входящие в состав логических отношений; -
вычисляются значения логических выражений; -
выполняется операция not; -
выполняется операция and; -
выполняется операция or; -
выполняется операция xor; -
выполняется операция eqv.
12. Простейший ввод-вывод
Ввод данных в VBA можно осуществлять разными способами:
-
записать исходные данные в виде констант в начале программы; -
присвоить переменным значения в начале программы с помощью оператора присваивания; -
с помощью функции InputBox; -
непосредственным вводом данных в ячейки рабочего листа 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
Вывод результатов может осуществляться двумя способами:
-
с помощью функции MsgBox; -
непосредственной записью результатов в ячейки листа 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
14. Условный оператор VBA
Операторы, выполняющие роль ветвления программы на основании какого-либо условия, называются операторами условного перехода.
П ростейшими операторами условного перехода являются операторы If…Then… (краткая форма) и If...Then...Else… (полная форма).
Рис. 8. Блок-схема, соответствующая краткой форме условного оператора
Простейший вид условного оператора в краткой форме соответствует конструкции рис. 8.
If Условие Then Оператор
В этом случае при выполнении указанного Условия выполняется Оператор, после чего происходит переход к следующей строке программы. Если же условие не выполняется, то Оператор игнорируется и сразу же происходит переход к следующей строке.
Примеры (см. алгоритмы суммы и количества):
If F>0 Then S=S+F
If F>0 Then K=K+1
Рис. 9. Блок-схема, соответствующая краткой форме условного оператора с группировкой операторов, выполняемых при истинности условия
Для конструкции рис. 9 условный оператор имеет вид:
If Условие Then Оператор1:Оператор2:…ОператорN
Более удобной для этой конструкции является форма
If Условие Then
Оператор1
Оператор2
…
ОператорN
EndIf
Пример (см. алгоритм среднего арифметического):
If F>0 Then S=S+F:K=K+1
или же
If F>0 Then
S=S+F
K=K+1
EndIf
Полная форма условного оператора имеет вид:
If Условие Then Оператор1 Else Оператор2
и соответствует конструкции рис.10.
Рис. 10. Блок-схема, соответствующая полной форме условного оператора
В этом случае при выполнении Условия выполняется Оператор1, в противном случае Оператор2, после чего происходит переход к следующей строке программы.
Пример вычисления модуля числа Х:
If X>0 Then MOD_X=X Else MOD_X=-X