Цикл While… Wend в VBA Excel, его синтаксис и описание отдельных компонентов. Примеры использования цикла While… Wend и его отличия от цикла Do While… Loop.
Цикл While… Wend в VBA Excel предназначен для повторения блока операторов до тех пор, пока выполняется заданное условие (возвращается значение True). По своему функционалу его можно считать ограниченной версией цикла Do While… Loop, который позволяет проверять условие как до, так и после выполнения операторов, и принудительно завершать цикл с помощью оператора Exit Do. У цикла While… Wend таких возможностей нет: условие может быть задано только перед блоком операторов, а принудительный выход из цикла не предусмотрен.
Синтаксис цикла While… Wend
1 2 3 |
While condition [ statements ] Wend |
Компоненты цикла While… Wend
Компонент | Описание |
---|---|
condition | Обязательный атрибут. Условие выполнения цикла. Выражение, возвращающее значение типа Boolean. |
statements | Необязательный* атрибут. Операторы вашего кода. |
*Если не использовать в цикле свой код VBA, смысл применения цикла теряется.
Примеры циклов While… Wend
Простейший цикл
1 2 3 4 5 6 7 |
Sub test1() Dim a As Byte While a < 100 a = a + 7 Wend MsgBox a End Sub |
Информационное сообщение MsgBox выведет число 105.
Проход по строкам листа
Допустим, на листе Excel есть таблица, расположенная в левом верхнем углу, начиная с ячейки A1, и под ней — пустая строка. Таблица содержит следующие данные:
Товар | Кол-во | Цена | Сумма |
---|---|---|---|
Батон | 1 | 33 | |
Лимон | 2 | 30 | |
Молоко | 3 | 55 | |
Хлеб | 1 | 30 | |
Чипсы | 5 | 18 |
Исходя из этих данных, необходимо, используя цикл While… Wend для прохода по строкам листа Excel, рассчитать сумму по каждому наименованию товара и записать ее в четвертую графу, а также в первую пустую строку записать слово «Итого:» (в третью графу) и итоговую сумму (в четвертую графу).
1 2 3 4 5 6 7 8 9 10 11 |
Sub test2() Dim i As Long, a As Double i = 2 While Cells(i, 1) <> "" Cells(i, 4) = Cells(i, 2) * Cells(i, 3) a = a + Cells(i, 4) i = i + 1 Wend Cells(i, 3) = "Итого:" Cells(i, 4) = a End Sub |
Вы можете скопировать таблицу на свой лист книги Excel, пример кода в стандартный модуль VBA и наглядно проверить работу цикла While… Wend.