Перейти к содержимому

VBA Excel. Цикл While…Wend

Цикл While...Wend в VBA Excel, его синтаксис и описание отдельных компонентов. Примеры использования цикла While...Wend и его отличия от цикла Do While... Loop.

Цикл While...Wend в VBA Excel предназначен для повторения блока операторов до тех пор, пока выполняется заданное условие (возвращается значение True). По своему функционалу его можно считать ограниченной версией цикла Do While... Loop, который позволяет проверять условие как до, так и после выполнения операторов, и принудительно завершать цикл с помощью оператора Exit Do. У цикла While...Wend таких возможностей нет: условие может быть задано только перед блоком операторов, а принудительный выход из цикла не предусмотрен.

  1. Синтаксис цикла While...Wend
  2. Компоненты цикла While...Wend
  3. Примеры циклов While...Wend

Синтаксис цикла While...Wend

While condition
    [ statements ]
Wend

Компоненты цикла While...Wend

Компонент Описание
condition Обязательный атрибут. Условие выполнения цикла. Выражение, возвращающее значение типа Boolean.
statements Необязательный* атрибут. Операторы вашего кода.

*Если не использовать в цикле свой код, смысл применения цикла теряется.

Примеры циклов While...Wend

Простейший цикл

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, рассчитать сумму по каждому наименованию товара и записать ее в четвертую графу, а также в первую пустую строку записать слово «Итого:» (в третью графу) и итоговую сумму (в четвертую графу).

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.