Типи операторів do

Типи операторів do

Ця книга допоможе освоїти інтегроване середовище розробки VBA і навчитися програмувати в VBA з використання об'єктів, їх властивостей, методів і подій. Обговорювані прийоми програмування ілюструються прикладами, які можна відразу ж випробувати на практиці. Отримані знання ви зможете застосувати як для настроювання й удосконалення популярний офісних додатків, включаючи додатки Office XP, так і для створення власних додатків.

Книга розрахована на тих, хто збирається швидко і без зайвих зусиль навчитися програмувати для Windows, використовуючи VBA.

Книга: VBA для чайників

Типи операторів Do. Loop

Типи операторів Do. Loop

У VBA кілька видів циклів Do. Loop, але всі вони працюють дуже схоже.

Do. Loop Повторює виконання блоку програмного коду, поки деякий умовний оператор всередині циклу не виконає команду End Do

Do While. Loop Починає і повторює виконання блоку програмного коду, тільки якщо задана умова приймає значення True

Do. Loop While Виконує блок програмного коду один раз, а потім повторює виконання, поки заданий умова приймає значення True

Do Until. Loop Починає і повторює виконання блоку програмного коду, тільки якщо задана умова приймає значення False

Do. Loop Until Виконує блок програмного коду один раз, а потім повторює виконання, поки заданий умова приймає значення False

Оператор Do While. Loop можна вважати прототипом структури Do. Ось його синтаксис:

Do While умова

(Оператори, що виконуються, коли умова - True)

Виявивши оператор Do While, VBA починає перевіряти умову. Якщо представляє умова вираз виявляється рівним False, VBA ігнорує іншу частину циклу і переходить відразу до операторів програми, наступним за оператором Loop. Якщо ж умова приймає значення True, VBA виконує оператори в блоці. Досягнувши оператора Loop, VBA повертається знову до оператора Do While, щоб перевірити умова знову.

Як правило, один або кілька операторів в тілі циклу можуть змінити значення виразу, що представляє умова, тому умова може стати рівним False. В цьому випадку VBA перериває виконання циклу і, пропустивши всі його оператори, переходить до виконання операторів, наступних за оператором Loop. Але якщо умова все ще одно True, оператори циклу будуть виконані ще раз.

Do While intOriginalNumber

intOneDigit = intOriginalNumber Mod 10

strBackwardsNumber = strBackwardsNumber intOneDigit

intOriginalNumber = Int (intOriginalNumber / 10)

У першому циклі Do перевіряється, що значення, введене користувачем, неотрицательно і що у введеному числі не менше двох знаків (а інакше, що ж в ньому переставляти?). Коли програма виконує цей цикл вперше, значенням змінної intOriginalNumber буде 0, оскільки до цього змінної не присвоювалося ніякого значення. Нуль менше 10, тому умова приймає значення True, і VBA починає виконання циклу.

Цикл містить один оператор, що відображає вікно введення, в якому користувача просять ввести відповідне число. Після того як число введено, оператор Loop відсилає процес виконання до початку циклу, де введене число перевіряється. Цикл завершить свою роботу тільки тоді, коли перевірка покаже, що було введено відповідне число. (Зверніть увагу на те, що в даному прикладі опущені деякі важливі пункти перевірки правильності даних, що вводяться, на зразок перевірки того, чи є число цілим і чи не є більше максимально допустимого для змінних типу Integer.)

Після підтвердження правильності введеного значення VBA переходить до наступного циклу. Умовою виконання цього циклу є позитивне значення, що міститься в змінної. Оскільки ненульові числа породжують True, можна замість Do While intOricinalNumbe r> 0 писати просто Do While intOriginalNumber - обидва варіанти працюють однаково.

У самому циклі проста процедура в три рядки розбирає цифри вихідного числа, починаючи справа наліво, і використовує їх в зворотному порядку для побудови нового рядка. Щоб зрозуміти, як працює цикл, не обов'язково розбиратися в програмному коді всередині циклу, але, я думаю, такі пояснення вам не завадять.

* У першому рядку використовується операція Mod, щоб привласнити змінної intOneDigit залишок від ділення числа на 10. Оскільки число ділиться на 10, залишком буде однозначне число, представлене останньої (праворуч) цифрою вихідного числа.

* У другому операторі цифра, отримана в першому рядку, додається в кінець створюється нової строкової величини.

* У третьому операторі число знову ділиться на 10, але на цей раз результат зберігається f в вихідної змінної. При такому розподілі просто відкидається правий знак числа. v Зауважимо, однак, що перед тим, як результат присвоюється змінної, він обробляється функцією Int. Використання функції intздесь необхідно, оскільки в іншому випадку результат був би заокруглений і це змінило б знаки числа в порівнянні з введеними спочатку.

* В процесі проходу циклу значення intOriginalNumber зменшується і нарешті стає рівним 0 після того, як всі цифри будуть оброблені (будь-яка цифра задає число, менше 10, а функція intотбрасивает дробову частину числа). В країні VBA нуль означає False, тому цикл завершиться, і програма покаже число зі зворотним розташуванням цифр.

Схожі статті