Лабораторная работа. Основы работы в VBA. Линейное программирование

4. Организация диалога между пользователем и программой. Ввод данных в программу и вывод результата

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

Данные, вводимые пользователем, называются входными данными. Чтобы получить входные данные от пользователя процедуры, надо использовать функцию InputBox. Функция InputBox отображает диалоговое окно, содержащее текст, который запрашивает пользователя ввести некоторое значение, и текстовое окно для ввода этого значения. Диалоговое окно, отображаемое InputBox, содержит также командные кнопки ОК и Cancel.

Функция InputBox имеет следующий синтаксис:

 

stringvar = InputBox (Promt [, Title])

 

Здесь stringvar представляет любую переменную, которая может сохранять строку. Аргумент Prompt представляет любое строковое значение (литерал, константу или переменную); он является обязательным аргументом функции InputBox, отображает эту строку как запрос в диалоговом окне. Аргумент Title является необязательным вторым аргументом для InputBox. Title представляет любое строковое значение (литерал, константу или переменную). InputBox отображает текст этой строки в строке заголовка диалогового окна. Если опустить аргумент Title, VBA отображает в строке заголовка диалогового окна InputBox название открытого приложения (Microsoft Excel). Например строка:

 

Temp = InputBox("Введите радиус круга", "Площадь круга")

 

выводит следующий запрос:

 

 

Ввести данные можно также из рабочего листа Excel. Для этого используется функция Cells. Функция имеет следующий формат: 

имя переменной = Cells(a, b)

 a – номер строки;

b – номер столбца.

Например, команда

 xEnd = Cells(3, 2)

 присваивает переменной xEnd числовое значение, записанное в рабочем листе Excel в 3 строке, 2 столбце.

Вывод результата можно организовать командами MsgBox (вывод ответа в диалоговом окне) и Cells (вывод ответа в рабочий лист Excel) Оператор MsgBox является простейшей формой экранного вывода, которую можно включать в процедуры VBA. Оператор MsgBox в простейшем случае имеет следующую форму записи:

 MsgBox "Promt", [Buttons As VbMsgBoxStyle = vbOKOnly], [Title]

 Первый аргумент Promt является текстом, который должен быть отображен в выводимом диалоговом окне посредством MsgBox. Второй аргумент оператора MsgBox Buttons As VbMsgBoxStyle = vbOKOnly является необязательным. Он определяет, сколько и какого типа командные кнопки появляются в диалоговом окне, отображаемом посредством MsgBox. Когда необязательный второй аргумент опущен, диалоговое окно содержит только одну кнопку – OK. Если второй аргумент опускается, то после первого аргумента ставится две запятые. Третий аргумент Title в операторе MsgBox определяет заголовок диалогового окна (отображается белыми буквами на синем фоне). Подобно первому аргументу текст, для строки заголовка диалогового окна заключается в кавычки. Пример: 

MsgBox "Сумма ряда равна  " & z, , "Решение задачи"

          После выполнения этой команды на экране возникает диалоговое окно, сообщающее результат – вместо переменной z выводится ее численное знакчение.


Для вывода результата в рабочий лист Excel используется команда:

 

Cells(i, j) = имя переменной

 

где i, j – номер строки и столбца ячейки соответственно, куда выводится численное значение переменной. Номер строки и столбца может присутствовать в команде как в виде переменных (их числовое значение должно быть целым и определено заранее), так и в виде конкретных целых чисел. Например, команда

 

Cells(2, 4) = x

 

выводит численное значение переменной x в ячейку рабочего листа, находящейся во второй строке, 4 столбце.