Читаем VBA для чайников полностью

(операторы, выполняющиеся при каждом проходе цикла)

Next счетчик

В следующем примере для отображения сообщения при каждом проходе цикла в процедуре используется окно Immediate (в редакторе Visual Basic окно Immediate открывается нажатием клавиш ):

Sub CountToTen()

Dim j As Integer

For j = 1 To 10

Debug.Print "Дубль № " & j

Next j

End Sub

В этом примере начало и конец являются буквальными числовыми значениями. Когда цикл начинается, j получает значение 1; другими словами, переменной счетчик присваивается значение начало. После каждого прохода цикла оператор Next j увеличивает значение j (на 1) и отсылает управление снова в начало цикла. Когда j достигает значения 10, выполнение цикла прекращается.

<p>Важные замечания по поводу циклов For.. .Next</p>

Старайтесь, чтобы ваш программный код всегда оставался понятным. Используйте 1 в качестве начального значения для цикла For. . . Next, если только у вас нет серьезных причин выбрать для этого другое число.

Такие серьезные причины на самом деле бывают, например, когда значение счетчика используется в самом цикле (но, уточню, не меняется в цикле). Если в цикле предпринимаются некоторые действия по отношению к последовательно пронумерованным элементам типа номеров страниц, то в качестве значений для величин начало и конец можно использовать реальные значения номеров этих элементов. В частности, при работе с массивами обычно начало выбирается равным 0 (подробности - в следующем разделе).

В операторе Next счетчик, завершающем цикл For. . . Next, имя переменной-счетчика указывать не обязательно - ключевое слово Next автоматически вычислит следующее значение счетчика и отошлет VBA в начало структуры. Однако определенно стоит приучить себя включать имя счетчика в оператор Next.

Тогда даже в случае нескольких вложенных циклов For. . .Next вы всегда сможете с первого взгляда сказать, какому циклу принадлежит данный оператор Next. He меняйте значение счетчика внутри цикла For. . .Next. Поскольку счетчик является обычной переменной, можно - а иногда и заманчиво - создать программный код, меняющий значение счетчика. Не поддавайтесь!

Стоит ошибиться со счетчиком и можно пропустить пару важных шагов или заставить цикл выполняться бесконечно.

Хотя и можно значение конец для цикла For . . . Next задать переменной, изменение значения такой переменной после начала выполнения цикла не повлияет на процесс выполнения. Цикл все равно будет выполнен столько раз, сколько задано оригинальным значением конец.

<p>Циклы For... Next и массивы</p>

Циклы For. . .Next особенно полезны при работе с массивами, именованными хранилищами для множеств элементов данных. Подробно массивы обсуждаются в главе 13, но дискуссия о циклах For. . . Next осталась бы неполной без нескольких слов о пользе таких циклов в совокупности с этими имеющими большое практическое значение корзинами для данных.

С помощью цикла For. . .Next несложно заполнить массив множеством вычисленных значений, как в следующем примере:

Dim intМассивКвадратов (14) As Integer

For a = 0 To 14

intMacсивКвадратов( a) = a * a

Next a

Этот пример программного кода начинается с объявления массива из 15 целых значений (15, а не 14, поскольку обычно VBA приписывает первому элементу в массиве индекс 0). Затем используется цикл For . . . Next, в котором каждому элементу массива, от 0 до 14, присваивается значение. Обратите внимание на то, что переменная а используется не только как счетчик, но и как индекс массива, указывающий на номер элемента в массиве.

<p>Вложенные циклы For... Next</p>

Подобно другим управляющим структурам VBA, циклы For. . .Next можно вкладывать один в другой - или в другие управляющие структуры, - так глубоко, как это необходимо. Следующий совершенно бесполезный фрагмент программного кода иллюстрирует эту возможность:

Dim sngC ' наверное, C означает "случайное число"

Randomize ' инициализация генератора случайных чисел

For A = 1 To 5

sngC = Rnd()

For B = 1 To 5

Debug.Print sngC * Rnd()

Next

Next A

Если вы достаточно наблюдательны, то без труда сможете проследить за шагами, которые делает VBA в процессе выполнения этого программного кода.

1. Предварительная подготовка.

Программный код начинается с объявления переменной и инициализации генератора случайных чисел VBA.

2. Начало внешнего цикла For. . .Next.

VBA вызывает функцию Rnd, чтобы присвоить переменной sngC случайное значение.

3. Начало внутреннего цикла For. . .Next.

Этот цикл вычисляет пять других чисел, повторяя вызов функции Rnd при каждом проходе цикла. Результат отображается в окне Immediate.

4. Завершение внутреннего цикла после выполнения им всех пяти вычислений.

Теперь снова продолжится выполнение внешнего цикла. Подчиняясь оператору Next

A, VBA возвращается в начало внешнего цикла.

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных