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

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.12.2023

Просмотров: 124

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

  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

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