- •Запись макросов
- •Выполнение макросов
- •Просмотр кода макроса
- •1.4 Редактирование кода макроса
- •1.5 Что нельзя сделать с помощью макросов?
- •1.6 Удаление макросов
- •1.7 Назначение макросов командным кнопкам
- •1.8 Назначение макроса графическим изображениям
- •1.9 Назначение макросов кнопкам панелей инструментов
- •2. Введение в процесс разработки приложений
- •2.1 Типы элементов управления
- •2.2 Вставка элементов управления в рабочий лист
- •2.3 Как осуществляется связь элемента управления с рабочим листом?
- •3. Программирование на vba
- •3.1 Объявление типа переменной
- •3.2 Общие правила написания имени переменной
- •3.3 Описание констант
- •4. Применение условных операторов
- •4.1 Простой условный оператор
- •4.2 Сокращённый условный оператор
- •4.3 Составной условный оператор
- •4.4 Многозначные ветвления
- •4.5 Оператор выбора Select Case
- •4.9 Оператор Exit For
- •4.10 Программирование циклов Do
- •4.11 Цикл Do…While
- •4.12 Цикл Do…Until
4.9 Оператор Exit For
Оператор Exit For позволяет выйти из цикла For…Next до его завершения. Тем самым программа сможет среагировать на определённое событие, не завершая выполнение цикла заданное число раз. Например, в следующем примере
Dim i As Integer
Dim name As String
For i = 1 To 10
name = InputBox("Введите Ваше имя или слово Обед для выхода")
If name = "Обед" Then
Exit For
End If
MsgBox name
Next
программа запрашивает у пользователя ввод до 10 имён, но если введено слово "Обед", то программа прервёт своё выполнение и приступит к обработке инструкций, следующих за оператором Next. Оператор Exit For обычно используется с оператором If или Select Case.
4.10 Программирование циклов Do
Для выполнения оператора For необходимо задать параметры, которые будут определять, сколько раз должен выполниться оператор(ы) цикла. Альтернативой циклу с For…Next является цикл Do , в котором группа операторов выполняется до тех пор, пока определённое логическое выражение имеет значение True (истина). Такие циклы нужно применять в тех задачах, где мы не можем знать точно, сколько раз будет повторен цикл. Например, Вы хотели бы, чтобы пользователь вводил пароль в вашей программе до тех пор, пока он не совпадёт с Вашим паролем. Существует несколько разновидностей цикла Do, в зависимости от условий его выполнения.
4.11 Цикл Do…While
Общий вид в алгоритме этого оператора следующий:
Нет Да
Синтаксис оператора следующий:
Do While <логическое выражение>
P1
P2
.
.
Pn
Loop
где Do(выполнить), While(пока), Loop(петля) - зарезервированные слова, P1, P2, Pn - операторы
Если логическое выражение после служебного слова While имеет значение True, то выполняются операторы P1, P2, PN , после чего проверка логического выражения повторяется. Если логическое выражение имеет значение False, то происходит выход из цикла. Если условие в заголовке цикла не является истинным с самого начала, цикл Do не выполняется ни разу.
Другая возможная запись цикла:
Do While Until <логическое выражение>
P1
P2
.
.
Pn
Loop
Смысл связки Do While Until <логическое выражение> - до тех пор, пока логическое выражение истинно выполнять операторы P1, P2, Pn.
Например, следующий цикл Do обрабатывает данные до тех пор, пока не будет введено слово “Обед”:
Dim i As Integer
Dim name As String
Do While name<>"Обед"
name = InputBox("Введите Ваше имя или слово Обед для выхода")
If name <> "Обед" Then
MsgBox name
End If
Loop
Вернёмся к задаче, которая была разобрана ранее: Найти сумму целых чисел от 1 до 50. В цикле с оператором For ответом было число 1275. Что изменится в программе, если применить оператор Do While? Прежде всего, надо позаботиться о том, чтобы какая-нибудь переменная менялась в цикле от 1 до 50. Ведь такой величины как параметр цикла нет в конструкции Do While - Loop. В нашем примере это будет переменная K. Задав в качестве условия выхода из цикла k <> 50, и применяя в цикле, оператор sum = sum + k мы просуммируем все 50 слагаемых и должны получить в ответе 1275.
1. В редакторе Visual Basic создайте процедуру и назовите её Сумма
2. Введите код процедуры, как на рис. 40
Рис. 40 Код процедуры Сумма целых чисел
3. Убедитесь, что ответ равен 1275
Рис. 41 Окно с ответом