Примеры работы с диалоговыми сообщениями (msgbox) в VBA. Окно сообщения в VBA Excel - MsgBox Примеры решения задач
Использование функции MsgBox в VBA Excel, ее синтаксис и параметры. Значения, возвращаемые функцией MsgBox. Примеры использования.
Функция MsgBox предназначена в VBA Excel для вывода сообщения в диалоговом окне, ожидания нажатия кнопки и возврата значения типа Integer, указывающего на то, какая кнопка была нажата. Для упрощения восприятия информации, в этой статье не рассматриваются параметры, связанные с контекстной справкой и модальностью диалогового окна MsgBox.
Синтаксис функции
MsgBox (Prompt [, Buttons ] [, Title ])
Обязательным параметром функции MsgBox является Prompt , если Buttons иTitle явно не указаны, используются их значения по умолчанию. Кроме того, если необязательные параметры не указаны и возвращаемое значение не присваивается переменной, сообщение не заключается в скобки:
Пример 1
Sub Test1() MsgBox "Очень важное сообщение!" End Sub
Параметры функции
*Максимальная длина параметра Prompt составляет примерно 1024 знака и зависит от их ширины.
**В Excel по умолчанию в заголовке MsgBox выводится надпись «Microsoft Excel».
Константы параметра «Buttons»
Тип и количество кнопок
Константа | Описание | Значение |
vbOKOnly | Отображается только кнопка OK. | 0 |
vbOKCancel | Отображаются кнопки OK и Cancel (Отмена). | 1 |
vbAbortRetryIgnore | Отображаются кнопки Abort (Прервать), Retry (Повторить) и Ignore (Пропустить). | 2 |
vbYesNoCancel | Отображаются кнопки Yes (Да), No (Нет) и Cancel (Отмена). | 3 |
vbYesNo | Отображаются кнопки Yes (Да) и No (Нет). | 4 |
vbRetryCancel | Отображаются кнопки Retry (Повторить) и Cancel (Отмена). | 5 |
Стиль значка
Константа | Описание | Значение |
vbCritical | Отображается значок Critical - Критичное сообщение, сообщение об ошибке. | 16 |
vbQuestion | Отображается значок Question - Сообщение с вопросом. | 32 |
vbExclamation | Отображается значок Exclamation - Предупреждающее сообщение. | 48 |
vbInformation | Отображается значок Information - Информационное сообщение. | 64 |
Для просмотра отображаемых значков, скопируйте код в свой модуль и запустите на выполнение:
Пример 2
Sub Test2() Dim a As Integer a = MsgBox("Критичное сообщение, сообщение об ошибке", 16) a = MsgBox("Сообщение с вопросом", 32) a = MsgBox("Предупреждающее сообщение", 48) a = MsgBox("Информационное сообщение", 64) End Sub
Кнопка по умолчанию
Возвращаемые значения
Константа | Кнопка | Значение |
vbOK | OK | 1 |
vbCancel | Отмена | 2 |
vbAbort | Прервать | 3 |
vbRetry | Повторить | 4 |
vbIgnore | Пропустить | 5 |
vbYes | Да | 6 |
vbNo | Нет | 7 |
Значение, возвращаемое функцией MsgBox, используется для выбора дальнейших действий исполняемой программы в зависимости от нажатой кнопки.
Для третьего примера зададим следующие параметры первой функции MsgBox:
- Prompt = «Выберите кнопку!»
- Buttons = 323 (3 (vbYesNoCancel) + 64 (vbInformation) + 256 (vbDefaultButton2))
- Title = «Выбор кнопки»
Вторая функция MsgBox используется как простое информационное сообщение с параметрами по умолчанию.
Пример 3
Sub Test3() Dim a As Integer a = MsgBox("Выберите кнопку!", 323, "Выбор кнопки") If a = 6 Then MsgBox "Вы нажали кнопку: Да" ElseIf a = 7 Then MsgBox "Вы нажали кнопку: Нет" Else MsgBox "Вы нажали кнопку: Отмена" End If End Sub
В этом примере, в зависимости от нажатой кнопки в первом диалоговом окне, во втором сообщении выводится название нажатой кнопки. Обратите внимание, что вторая кнопка в открывшемся первом окне MsgBox выделена по умолчанию и срабатывает при нажатии клавиши «Enter».
А что будет, если первое диалоговое окно из третьего примера закрыть крестиком? Проверьте сами.
Лекция для ЗФ
ОПЕРАТОРЫ ВВОДА И ВЫВОДА ДАННЫХ.
ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
ОПЕРАТОР ПРИСВАИВАНИЯ LET
Оператор присваивания служит для вычисления значения выражения и присваивания этого значения переменной. При записи программы оператор Let можно опускать.
Формат оператора:
Имя_переменной = Выражение
SUMMA=X+COS(X)^2
Следует различать оператор присваивания и алгебраическое равенство. Оператор Y = A + B означает для ЭВМ: сложить содержимое ячеек памяти, отведенных для размещения значений переменных А и В, и поместить результат в ячейку памяти, отведенную для значения переменной Y. В программировании широко используется конструкция оператора присваивания типа I = I + 1. К заданному значению переменной I прибавляется 1, и результат помещается в ту же ячейку, заменив бывшую там информацию на новую. С точки зрения математики равенство i = i +1 не имеет смысла.
При присвоении переменным строковых значений их необходимо заключать в кавычки:
T = «Параметр 1»,
а значения типа Дата/Время заключать в символы # («решетка»):
D = #11/29/2008#
ОПЕРАТОРЫ ВВОДА ДАННЫХ
Рассмотрим три основных способа ввода данных.
1. Запись значений переменных непосредственно в тексте программы осуществляется с помощью оператора присваивания .
Имя_переменной = Выражение
Этот способ используется, если исходные данные не изменяются при нескольких исполнениях программы.
2. Ввод данных из ячеек рабочего листа Excel .
Для этого используется инструкция С ells (i , j ) , которая в данном случае выступает как функция ввода данных. Формат использования:
Имя_переменной = С ells (i , j ) ,
где i , j – порядковые номера соответственно строки и столбца (числовые значения!), на пересечении которых находится ячейка, т. е. адрес ячейки.
При этом следует иметь в виду, что данные на листе Excel уже имеются .
Пример: А = Сells(1, 2)
После выполнения этой команды переменной А присвоится значение, которое хранится в ячейке, находящейся в первой строке (первая цифра) и во втором столбце (вторая цифра), т. е. в ячейке B1 электронной таблицы.
3. Ввод данных непосредственно в ходе выполнения программы , т. е. в диалоговом режиме, выполняется с помощью диалогового окна ввода информации, реализуемого функцией InputBox . Основной формат этой функции:
Имя_переменной = InputBox (“Сообщение” [, “Заголовок”] [, “Значение”]) .
В ходе работы программы при выполнении данной команды на экране монитора появляется диалоговое окно с указанным Заголовком , содержащее текст Сообщения , а также поле ввода с указанным Значением:
Выполнение программы приостанавливается в ожидании ввода данных с клавиатуры и нажатия одной из кнопок. После ввода информации и нажатия на кнопку ОК переменной присваивается значение типа String (строковый тип данных), содержащее текст , введенный в поле ввода.
Пример: x = InputBox(“Введите x”, “Ввод исходных данных”, “0.15”)
Имя окна можно опустить (при этом местоположение запятых сохраняется):
x = InputBox("Введите x", "0.15")
Функция InputBox используется, когда исходные данные меняются при каждом запуске программы , поэтому обычно значение переменной не задается и применяется простейший вариант записи этой функции:
Имя_переменной = InputBox (“Сообщение”)
Пример: d = InputBox(“Введите значение диаметра”)
Если в поле ввода в появившемся диалоговом окне ввести 23, то в переменную d будет записан текст “23”, а не число 23. Текстовая строка “23” представляет собой лишь визуальное отображение числа, но не является числом в буквальном смысле слова, т. е. с ним, как и с любым другим текстом, нельзя производить никаких арифметических действий.
Для преобразования строкового типа данных в числовой тип используется функцияVal (Строка ) , которая возвращает число, содержащееся в Строке , как числовое значение соответствующего типа.
При записи в коде программы
d = Val(InputBox(“Введите значение диаметра”))
и вводе в поле ввода цифр 23 переменной d присвоится число 23.
ОПЕРАТОРЫ ВЫВОДА ДАННЫХ
Рассмотрим три основных способа вывода данных.
1. Вывод в диалоговое окно с помощью команды MsgBox:
MsgBox "Сообщение", "Заголовок"
В результате выполнения этой команды на экране появляется диалоговое окно Заголовок , содержащее указанный текст Сообщения . Выполнение программы приостанавливается до нажатия пользователем кнопки ОК.
Пример: MsgBox y , "Результат"
В данном случае в качестве выводимого в окно Результат сообщения задано текущее значение переменной y :
Простейший формат записи оператора MsgBox:
MsgBox "Сообщение"
Обычно сообщение включает в себя не только выводимое значение, но и комментарий, который заключается в кавычки. Для слияния нескольких фрагментов в одну строку в операторе вывода их разделяют знаком & .
Пример: MsgBox “Значение диаметра =” & d
В результате на экране появится следующее диалоговое окно:
2. Вывод данных на лист рабочей книги Excel с использованием инструкции С ells (i , j ) . В этом случае в отличие от ранее рассмотренного она выступает как команда вывода:
C ells (i , j ) = "Сообщение".
В результате этой команды указанное Сообщение помещается в ячейку с адресом, определяемым номером строки i и номером столбца j .
Cells(1, 1) = “x=” ‘Вывод в ячейку A 1 текста x =
Cells(1, 2) = x ‘Вывод в ячейку B 1 текущего значения переменной x
3. Вывод данных в окно отладки Immediate («Немедленно»). Это окно обычно располагается под окном программного кода. Если этого окна нет, то его можно вывести, нажав Ctrl+G или из главного меню VBA View → Immediate Window .
Для вывода в окно отладки применяется метод Print (печать) объекта Debug (отладчик). Формат записи:
Debug.Print ["Сообщение"]
Пример: Debug.Print “Значение диаметра =” & d
Как видно из этого примера, команда Debug.Print используется аналогично команде MsgBox.
Пустой (т. е. без Сообщения ) метод Debug.Print выводит пустую строку.
Помимо знака & в методе Print возможно использование разделителей списка выводимых данных. При этом знак «; » означает вывод очередного значения непосредственно за предыдущим, знак «, » – переход к началу новой зоны печати (окно отладки делится на 5 вертикальных зон по 14 символов каждая). При вводе знак «; » между элементами выводного списка можно опускать, VBA добавит его автоматически.
Запятая или точка с запятой в конце выводного списка в команде Debug.Print подавляет переход на новую строку (следующий Debug.Print начнет печать в той же строке).
Пример: Debug.Print "Результат y="; y;
В любом операторе вывода (MsgBox, Cells, Debug.Print) возможен вывод не только готовых результатов, но и одновременный расчет и вывод:
Debug.Print "s = "; s, " k1+k2 = "; k1 + k2
MsgBox "Если диаметр = " & d & ", то радиус = " & d / 2
Для вывода числового значения в заданном формате в операторах вывода MsgBox, Debug.Print вместо имени переменной следует использовать функцию Format с указанием количества десятичных знаков.
Debug.Print z ‘вывод переменной z обычным образом
Debug.Print Format (z , "#0. 00 ") ‘вывод переменной z с 2-мя десятичными знаками
MsgBox Format (z , "#0. 000 ") ‘вывод переменной z с 3-мя десятичными знаками
В операторе вывода Cells функцию Format использовать не рекомендуется.
ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
Простейшими являются программы, реализующие алгоритмы линейного вычислительного процесса. Программа в этом случае содержит операторы ввода данных, присваивания и вывода данных. Операторы записываются последовательно друг за другом в естественном порядке их следования и выполняются только один раз.
Общая структура линейной программы:
Option Explicit
Sub Имя _ процедуры ()
‘Объявление констант (Const … )
‘Объявление переменных (Dim … )
‘Тело процедуры:
‘Ввод исходных данных
‘Вычисления
‘Вывод результатов
End Sub
Пример_Л1. Составить ГСА и текст программы для вычисления функции:
где x = a∙t 2 + 0.2 , a = 18, t – произвольное.
ГСА Текст программы:
Option Explicit ‘Запрет использования необъявленных переменных
Sub Лин_процесс1() ‘Начало процедуры Лин_процесс1
Const a = 18 ‘Объявление константы a
Dim t As t
Dim x As Single ‘Объявление вещественной переменной x
Dim y As Single ‘Объявление вещественной переменной y
t = Val(InputBox("Введите t")) ‘Ввод значения t
x = a * t ^2 + 0.2 ‘Расчет x
y = (x ^ 2 + Log(x) - (x + 1) ^ 2) / (x * Sin(x)) ‘Расчет y
MsgBox "Результат y=" & y ‘Вывод y в диалоговое окно
End Sub ‘Конец процедуры
Ниже приведено решение того же примера с использованием других способов ввода и вывода данных.
Условный оператор в VBA.
Часто необходимо, чтобы часть программы выполнялась бы только при выполнении определенных условий. Решение данной проблемы заключается в использовании специальных конструкций, использующих операторы ветвления.
Общий вид данной конструкции:
If <логическое выражение> Then <список операторов> End If
<логическое выражение> - это простое или сложное условие, или логическая константа (true или folse)
Сложное условие состоит из простых условий, соединенных логическими операциями AND или OR
Например: (а=b)
Алгоритм
2)Если значение логического выражения true, то выполняется список операторов
3)Если значение логического выражения folse, то ничего не выполняется
Дополнительная ветвь условного перехода:
If <логическое выражение> Then
<список операторов1>
<список операторов2>
Алгоритм
1)Вычисляется значение логического выражения
2)Если значение логического выражения true, то выполняется список операторов 1
3)Если значение логического выражения folse, то выполняется список операторов 2
Несколько вложенных друг в друга операторов:
If <логическое выражение1> Then
<список операторов1>
ElseIf <логическое выражение2> Then
<список операторов2>
ElseIf <логическое выражениеN> Then
<список операторовN>
Алгоритм
1)Вычисляется значение логического выражения 1
2)Если значение логического выражения 1 - true, то выполняется список операторов 1
3)Если значение логического выражения 1 - folse, то выполняется список операторов 2
4)Если значение логического выражения 2 - true, то выполняется список операторов 2
5)Если значение логического выражения 2 - folse, то выполняется список операторов 3
4)Если значение логического выражения N - true, то выполняется список операторов N
5)Если значение логического выражения N - folse, то ничего не выполняется
a = inputbox("введите A")
Cells – свойство позволяющее обращаться к конкретным ячейкам рабочего листа.
Cells(i,j) – ячейка и ее координаты – номер строки и номер столбца.
Например:
Cells(1,1) – обращение к ячейке A1
Чтобы поместить значение или формулу в ячейку:
Cells(2,2)=2 – в ячейку В2 поместить значение 2.
Cells(2,2).Value =2 в ячейку В2 поместить значение 2.
Cells(3,1) = a+b - в ячейку С1 поместить формулу суммы чисел a и b.
Cells(3,2) = cells(1,1).value + cells(1,2).value – в ячейку С2 поместить формулу суммы значений из ячеек А1 и А2.
Cells(i,j) = InputBox(“”) – в ячейку будет помещаться значение, которое мы введем в окошке inputbox.
Cells(i,j).Select – выделить конкретную ячейку
Cells.Select – выделить все ячейки на рабочем листе.
Cells(i,j).Activate – сделать ячейку активной.
Чтобы вывести значение находящееся в ячейке на экран:
Cells(1,1) =3 – в ячейку A1 помещаем значение 3.
Msgbox(cells(1,1)) – значение из ячейки выводится на экран.
Cells(1,1) = к+2 – в ячейку A1 помещаем формулу к+2, где к – заданное число
Msgbox(cells(1,1)) – результат вычисленной формулы, хранящийся в ячейке A1 выводится на экран.
MsgBox() - Выводит на экран окно сообщения (Message Box), и возвращает значение, в зависимости от того, какую кнопку нажал пользователь. Может служить для вывода результатов расчета на экран в виде сообщения.
MsgBox (prompt, buttons, title, helpfile, context)
MsgBox (подсказка, кнопки, заголовок, файл справки, контекст)
prompt (подсказка) – выводимое на экране сообщение.
buttons (кнопки) – константа, определяющая, какие кнопки будут содержаться в данном диалоговом окне.
title (заголовок) – заголовок диалогового окна.
helpfile (файл справки) – имя справочного файла.
context (контекст) – контекст для контекстно-зависимой справки, описывается в том случае, если есть helpfile.
InputBox - функция ввода исходных данных. Выводит диалоговое окно с сообщением и поле для ввода текста пользователя.
" мы вкратце познакомились с диалоговым сообщением msgbox. Но это было простейшее информационное сообщение. Теперь рассмотрим подробнее работу с функцией MsgBox и все виды диалоговых сообщений.
Синтаксис функции MsgBox
Функция MsgBox имеет следующий синтаксис:
MsgBox (сообщение [, константы сообщения] [, заголовок] [, файл справки hlp, контекст справки])
Обязательным параметром является «Сообщение», остальные могут быть опущены.
MsgBox “Текст сообщения ”
- Константы сообщения - позволяют определить вид диалогов.
- Заголовок – задает заголовок формы диалога.
- Файл справки hlp - строковое выражение, указывающее имя файла справки для диалогового окна.
- Контекст справки - числовое выражение, указывающее номер контекста файла справки для диалогового окна.
Диалоговое окно вида:
создается следующей командой:
MsgBox "Текст содержащий вопрос", vbYesNo, "Название сообщения"
Для создания сообщения такого вида:
команда будет выглядеть так:
MsgBox "Текст содержащий вопрос", vbYesNoCancel, "Название сообщения"
Сообщение такого вида:
создается командой:
MsgBox "Текст содержащий вопрос", vbAbortRetryIgnore, "Название сообщения"
т.е. из всех трех примеров в команде меняется только второй параметр (vbYesNo, vbYesNoCancel, vbAbortRetryIgnore). Это и есть значения (константы) определяющие вид сообщения. Параметры (vbYesNo, vbYesNoCancel) могут быть заменены на числовое значение, например диалог vbYesNo можно вызвать, указав 4: MsgBox "Текст содержащий вопрос", 4, "Название сообщения".
Ниже приведен полный список констант и эквивалентных им цифровых значений:
Константа | Значение | Описание |
vbOKOnly | Выводит сообщение с кнопкой OK |
|
vbOKCancel | Выводит сообщение с кнопками OK и Отмена |
|
vbAbortRetryIgnore | Выводит сообщение с кнопками Прервать , Повтор, Пропустить |
|
vbYesNoCancel | Выводит сообщение с кнопками Да , Нет , Отмена . |
|
Выводит сообщение с кнопками Да и Нет |
||
vbRetryCancel | Выводит сообщение с кнопками Повтор и Отмена |
В сообщениях можно слегка изменить внешний вид, назначить кнопку по умолчанию, добавить кнопку "Справка" путем сложения констант.
Например: MsgBox "Текст содержащий вопрос", vbYesNoCancel+vbInformation+ vbMsgBoxHelpButton+vbDefaultButton2, "Название сообщения" построит сообщение вида:
vbInformation
- добавляет иконку восклицания в сообщение
vbMsgBoxHelpButton
- добавляет кнопку "Справка"
vbDefaultButton2
- устанавливает фокус на второй кнопке ("Нет
")
Ниже таблица со списком констант иконок и констант, устанавливающих фокус на кнопках:
Константа | Значение | Описание |
vbCritical | Выводит иконку критического сообщения (красный овал с крестом) |
|
vbQuestion | Выводит иконку с вопросительным знаком |
|
vbExclamation | Выводит иконку с восклицательным знаком (в желтом треугольнике) |
|
vbInformation | Выводит иконку информационного сообщения |
|
vbDefaultButton1 | Устанавливает фокус по умолчанию на первой кнопке |
|
vbDefaultButton2 | Устанавливает фокус по умолчанию на второй кнопке |
|
vbDefaultButton3 | Устанавливает фокус по умолчанию на третьей кнопке |
|
vbDefaultButton4 | Устанавливает фокус по умолчанию на четвертой кнопке |
|
vbMsgBoxHelpButton | Добавляет кнопку Справка |
|
vbMsgBoxRight | Выравнивание текста сообщения по правой стороне |
|
vbMsgBoxRtlReading | Зеркально переворачивает все элементы в сообщении (см. снимок ниже) |
Как узнать какую кнопку в сообщении нажал пользователь?
Определяться выбор пользователя будет с помощью . В некоторых ситуациях можно использовать .
Например, вызовем сообщение двойным нажатием ЛКМ по любой ячейке на листе. В соответствии с выбором пользователя, выведем в эту ячейку текст.
Создаем новую книгу Excel и переходим в режим Visual Basic (Alt+F11). В окне проекта выбираем «Лист1 » и кликаем по нему два раза ЛКМ.
В открывшемся окне редактора кода вводим следующую процедуру:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean ) If
MsgBox("Текст содержащий вопрос", vbYesNo, "Название сообщения") = vbYes Then
|
В условии IF мы сравниваем результат возвращенный функцией MsgBox, с константой vbYes т.е. если в сообщении нажата кнопка «Да », тогда функция MsgBox возвращает значение vbYes (6). Полный перечень констант и их цифровых эквивалентов ниже. Теперь попробуйте на Листе 1 кликнуть два раза по любой ячейке.
Примечание: При вызове сообщения выполнение программы останавливается до тех пор, пока не будет получен ответ от пользователя.
Второй вариант вызова диалога с помощью .
Создадим вторую процедуру на Листе 2. Код процедуры следующий:
Private Sub
Worksheet_BeforeDoubleClick(ByVal
Target As
Range, Cancel As Boolean
) Select Case
mes |
В этом случае результат вызова MsgBox присваивается переменной mes и далее в Select Case ищется совпадение и согласно совпадения, выполняются действия.
Вот и все. Ниже прикреплен готовый пример, рассмотренный в этой статье.
Перечень констант и значений, возвращаемых функцией MsgBox:
Константа | Значение | Кнопка |
vbCancel | Отмена |
|
Прервать |
||
Повтор |
||
vbIgnore | Пропустить |
|
Метод Cells делает указанную ячейку активной. Синтаксис метода следующий:
Cells[(N строки, N столбца)]
N строки - номер строки текущего листа Excel,
N столбца – номер столбца текущего листа Excel (при обращении к этому методу столбцы нумеруются).
В данном варианте синтаксиса предполагается, что на активном листе Excel ячейка, находящаяся на пересечении N строки и N столбца, становится активной.
С помощью метода Cells можно сделать активной ячейку, чтобы затем вводить или выводить данные.
Если с помощью этого метода осуществляется ввод данных из ячейки рабочего листа в переменную, то Cells стоит в правой части оператора присваивания, а если осуществляется вывод из переменной в ячейку рабочего листа, то Cells стоит в левой его части.
Структура ввода , с использованием метода Cells следующая:
<
имя
>=Cells (
< имя > - простая переменная или элемент массива.
Структура вывода с использованием метода Cells следующая:
Cells(
< выражение > - любое выводимое значение.
Рассмотрим, пример следующей программы:
Sub ввод_ввывод_Cells()
Cells(5, 1) = "c="
До запуска этого макроса рабочий лист Excel имел вид (см. рис. 13):
А после запуска макроса он выглядит так (см. рис. 14):
Управляющие структуры VBA. Условный оператор. Оператор безусловного перехода
Управляющие структуры позволяют управлять последовательностью выполнения программы. Без операторов управления все операторы программы будут выполняться слева направо и сверху вниз. Рассмотрим одну из управляющих структур VBA – условный оператор .
Условный оператор применяется, когда необходимо выполнить один или группу операторов в зависимости от значения некоторого условия.
Синтаксис условного оператора:
Короткая форма Þ If <условие> Then <оператор>
If < условие > Then
< оператор > /< Группа операторов 1 >
Полная форма ÞIf < условие > Then
< оператор 1 > / < Группа операторов 1 >
< оператор 2> < Группа операторов 2 >
В блок схеме условный оператор изображается так:
Обычно условие является простым сравнением, но оно может быть любым выражением с вычисляемым значением. Это значение интерпретируется как False (Ложь), если оно нулевое, а любое ненулевое рассматривается как True (Истина). Если условие истинно, то выполняются все выражения, стоящие после ключевого слова Then . Если условие ложно, то выполняются все выражения, стоящие после ключевого слова Else .
Допускаются многократно вложенные конструкции, имеющие столько уровней вложения сколько необходимо.
Рассмотри еще одну управляющую структуру - оператор безусловного перехода . Его синтаксис:
GoTo метка ,
где метка – это любая комбинация символов.
Этот оператор принудительно изменяет последовательность выполнения программы. Оператор GoTo передает управление оператору с меткой, т.е. следующим за оператором GoTo будет выполняется оператор, указанный с помощью метки.
Управляющие структуры VBA. Операторы цикла.
Иногда требуется многократно выполнять некоторый набор инструкций автоматически, либо решить задачу по-другому в зависимости от значения переменных или параметров, заданных пользователем во время выполнения. Для этого служат условный оператор и операторы циклы.
Рассмотрим операторы цикла VBA. Цикл с известным числом повторений (цикл с параметром) реализован в VBA с помощью оператора For Next следующей структуры:
For <параметр цикла>= <начальное значение> To <конечное значение>
<операторы VBA>
Next <параметр цикла>
<параметр цикла> – имя (идентификатор) параметра цикла;
<начальное значение> – начальное значение параметра цикла;
<конечное значение> – конечное значение параметра цикла;
<шаг> – шаг изменения параметра цикла (необязательный параметр, если он отсутствует, шаг изменения равен 1);
<операторы VBA>
В блок-схеме этот оператор изображается так:
В теле этого цикла можно использовать оператор Exit For , с помощью которого можно завершить цикл For Next до того, как параметр примет свое конечное значение.
Циклы с неизвестным числом повторений реализуются на VBA с помощью операторов Do While … Loop, Do Until … Loop, Do … Loop While, Do … Loop Until .
Рассмотрим структуру оператора Do While … Loop.
Do While <условие>
<операторы VBA>
Здесь <условие> – логическое выражение;
<операторы VBA> - операторы VBA, реализующие тело цикла.
<условие>, если <условие> принимает значение Истина(True), то выполняются операторы до служебного слова Loop. Затем вновь проверяется условие, и так продолжается до тех пор, пока условие не станет ложным(False).
Рассмотрим структуру оператора Do Until … Loop.
Do Until <условие>
<операторы VBA>
Оператор выполняется следующим образом. Проверяется <условие>, если <условие> принимает значение Ложь(False), то выполняются операторы до служебного слова Loop. Затем вновь проверяется условие, и так продолжается до тех пор, пока условие не станет истинным (True).
В блок схеме этот оператор изображается так:
Мы рассмотрели операторы цикла, которые реализуют цикл с предусловием.
Рассмотрим, операторы цикла, которые реализуют цикл с постусловием. Это операторы Do … Loop While и Do … Loop Until. Структура этих операторов следующая:
<операторы VBA>
Loop Until <условие>
<условие>, если <условие> принимает значение Ложь(False), то опять выполняются операторы до служебного слова Loop. Так продолжается до тех пор, пока <условие> не станет истинным (True).
В блок схеме этот оператор изображается так:
<операторы VBA>
Loop While <условие>
Оператор выполняется следующим образом. Выполняются операторы до служебного слова Loop. Затем проверяется <условие>, если <условие> принимает значение Истина(True), то опять выполняются операторы до служебного слова Loop. Так продолжается до тех пор, пока <условие> не станет ложным (False).
В блок схеме этот оператор изображается так:
В VBA существует оператор, позволяющий осуществить досрочный выход из циклов с неизвестным числом повторений. Для выхода из этих циклов нужно использовать оператор Exit Do .