В главном меню команд имеется вкладка Run, в которой находятся команды управления запуском программ на выполнение.
Запуск программы на выполнение осуществляется командой
Run Þ RunSub,
клавишей < F5 > или инструментальной кнопкой . В результате, будет выполняться макрос, в тексте которого находится текстовый указатель.
Выполнение программы можно прервать, не ожидая ее окончания, командой
Run Þ Break,
клавишей клавиатуры < Ctrl >+< Break > или инструментальной кнопкой . Это, например, может понадобиться, если Вы считаете, что программа выполняется слишком долго, или Вы видите, что полученные промежуточные результаты не верны.
Если во время выполнения программы интерпретатор обнаружил ошибку, он приостанавливает процесс и выводит сообщение об ошибке. Например,
Нажатие кнопки End приведет к прекращению выполнения программы, а если нажать кнопку Debug, интерпретатор возвращает пользователя в текстовый редактор и ожидает исправления этой ошибки. После этого команда RunSub приведет кпродолжению выполнения программы, а не к запуску ее с самого начала. Чтобы заново перезапустить макрос с самого начала, следует перед командой RunSub выполнить команду
Run Þ Reset
или щелкнуть по инструментальной кнопке .
Динамические массивы
Если заранее не известно, сколько элементов потребуется в массиве, можно объявить его динамическим. Для этого достаточно при объявлении (с помощью Dim) в скобках не указывать размерность, а указать ее позже (перед использованием массива) с помощью оператора ReDim.
Например,
Dim Прибыль () As Single, Затраты() As Single
……….
n = 5
m = 20
……….
ReDim Прибыль (16), Затраты(n, m)
……….
Здесь оператором Dim объявлены два массива данных вещественного типа Прибыль и Затраты, а затем с помощью оператора ReDim указано, что массив Прибыль – одномерный, а массив Затраты – двухмерный, причем размер массива Прибыль задан константой 16, а размер массива Затраты задан переменными n и m.
Диалоговый ввод и вывод данныхс помощью
Стандартных функций
Ввод и вывод данных может осуществляться по-разному. Диалоговый ввод (или вывод) означает, что для этих целей используются диалоговые окна, в которых пользователь читает сообщения или указывает данные, которые хочет ввести. В VBA имеются соответствующие разнообразные возможности. Проще всего для этого использовать стандартные функции InputBox (диалоговый ввод данных) и MsgBox (диалоговый вывод).
Ввод данных
Функция InputBox автоматически создает диалоговое окно, в котором имеется поле ввода и две командные кнопки: OK (подтверждение ввода) и Cancel (отмена). От пользователя требуется указать константу в поле ввода и щелкнуть по кнопке OK. В результате, эта функция возвращает введенную константу. Общий формат этой функции имеет следующий вид:
InputBox (< текст > [, < заголовок >] [, < default >])
Здесь
< текст > – обязательный аргумент с текстом комментария в окне;
< заголовок > – текст заголовка окна (по умолчанию – MS Excel);
< default > – значение константы, которое выводится в окне в поле ввода (для “умолчания”).
Например, оператор
Затраты = InputBox("Введите размер затрат", "Ввод данных", 30000)
приведет к выводу на экран диалогового окна
Пользователь может изменить значение, указанное в поле ввода. После щелчка по кнопке OK переменной Затраты автоматически будет присвоено введенное пользователем число.
Значение < текст > и < заголовок > могут быть заданы текстовыми константами, переменными или выражениями с оператором “ конкатенация ” (обозначается знаком &). Этот оператор можно применять для объединения значений как текстовых, так и числовых переменных или констант. Например,
number = 5
Q = InputBox("Введите количество " & number & "-го товара", "Ввод данных", 0)
приведет к выводу на экран диалогового окна
Текст комментария (< текст >) может быть многострочным. Для этого используется функция Chr с аргументом 13. Например, оператор
Затраты = InputBox("Введите размер затрат" & Chr(13) & "в июне", "Ввод данных", 0)
приведет к выводу на экран диалогового окна
Если объединяются только текстовые данные, можно вместо знака & указывать знак +. Например, в последнем примере можно было написать
Затраты = InputBox("Введите размер затрат" + Chr(13) + "в июне", "Ввод данных", 0)
Однако следует иметь в виду, что в этом случае попытка указать числовое данное приведет к ошибке. Этого можно избежать, прообразовывая числовые данные в строковые с помощью функции CStr. Например, если тип переменной number – integer (целый), то оператор
Q = InputBox("Введите количество " + number + "-го товара", "Ввод данных", 0)
будет восприниматься интерпретатором как ошибочный. Чтобы этого не произошло, следует преобразовать тип переменной number в строковый (string):
Q = InputBox("Введите количество " + CStr(number) + "-го товара", "Ввод данных", 0)
Вывод данных
Функция MsgBox выводит на экран диалоговое окно с текстовым сообщением и набором командных кнопок (Ok, Отмена, Да, Нет и т.д.). После выбора пользователем одной из этих кнопок MsgBox возвращает результат этого выбора.
Общий формат этой функции имеет следующий вид:
MsgBox (< текст > [, < кнопки >] [, < заголовок >])
Здесь аргументы < текст > и < заголовок > имеют такой же смысл, что и в функции InputBox, и оформляются аналогично. Значение аргумента < кнопки > определяет набор кнопок в окне:
vbOkOnly – кнопка “ Ok ”;
vbOkCancel – кнопки “ Ok ” и “ Отмена ”;
vbYesNo – “ Да ” и “ Нет ”;
vbYesNoCancel – “ Да ”, “ Нет ” и “ Отмена ”;
vbAbortRetryIgnore – “ Прервать ”, “ Повтор ” и “ Пропустить ”;
vbRetryCancel – “ Повтор ” и “ Отмена ”.
По умолчанию – vbOkOnly.
Данная функция возвращает результат “нажатия” кнопки пользователем:
vbYes – “Да”; vbNo – “Нет”; vbCancel – “Отмена” и т.д.
В окно, которое выводится данной функцией, можно добавить знак, комментирующий вид диалога. Для этого аргумент < кнопки > оформляется с добавлением (с помощью знака +) соответствующего значения:
vbInformation – информация, не требующая ответа ;
vbQuestion – вопрос ;
vbExclamation – важная информация ;
vbCritical – предупреждение .
Например,
v = 10
f = MsgBox(“Использовать ” + CStr (v) + “?”; vbYesNo+vbQuestion; “Подтверждение”)
Здесь оформлен вывод диалогового окна с названием “Подтверждение”, комментарием с текстом и числовым значением переменной v, командными кнопками (Да и Нет) и сопроводительным знаком Question (вопросительный знак).