52953.fb2
Это проще всего показать на примере с числами. Предположим, ваш оператор Select Case открывается следующей строкой программного кода:
Select Case intВозрастПациента
В данном случае значением для сравнения будет переменная целого типа intВозрастПациента, представляющая возраст пациента клиники. В следующем списке представлено несколько типов сравнения, которые можно реализовать с помощью операторов Case, и приводятся соответствующие примеры.
* Можно сравнить тестовое значение с некоторым диапазоном значений, как в случае
Case 18 То 35
Messages("ВзрослыйМолодой").Print
* Обратите внимание на ключевое слово То, размещенное между значениями, определяющими границы диапазона. Сам диапазон включает и эти значения, и те, которые находятся между ними.
* Можно сравнивать значения и с помощью операций сравнения, отличных от операции =, как в случае
Case Is > 65
Messages("Взрослый пожилой").Print
Здесь предполагается использовать перед операцией сравнения ключевое слово Is.
На самом деле вы можете Is и не печатать- если вы его пропустите, VBA вставит это ключевое слово за вас.
* Можно в одном операторе Case указать несколько критериев для сравнения, как в случае
Case 0 То 5, 15, Is > 55
Messages("НапоминаниеОПрививке").Print
* Не забудьте разделить критерии для сравнения запятыми. Кстати, оператор Case с несколькими критериями эквивалентен выражению, построенному на основе использования операции Or, - если тестируемое значение удовлетворяет хотя бы один из критериев, следующие за Case операторы будут выполнены.
Управляющие структуры типа "цикл" используются тогда, когда необходимо повторить выполнение некоторого блока программного кода несколько раз. Повторение одного или нескольких операторов является главным средством выполнения многих математических вычислений, извлечения небольших порций данных из больших, применения одних и тех же действий по отношению к каждому из множества элементов некоторой группы.
VBA предлагает три типа структур, организующих циклы.
Тип цикла | Особенности работы |
Do. . .Loop | Пока или до тех пор, пока некоторое условие имеет значение True |
For. . .Next | Заданное число раз |
For Each. .. Next | Для каждого объекта из коллекции объектов |
При работе с вложенными циклами помните простое правило: внутренний цикл должен закончиться прежде, чем закончится внешний.
Все возможные версии оператора Do ... Loop предназначены для повторения заданного блока программного кода неопределенно долго, пока не будет выполнено некоторое условие.
Для того чтобы выяснить, продолжать цикл или нет, оператор Do ... Loop оценивает заданное условное выражение типа условных выражений, используемых для оператора If... Then и описанных выше в разделе "Курс на использование условных выражений".
Случаев, когда структуры Do... Loop полезны, просто не счесть. Вот несколько примеров.
* Отображение сообщения об ошибке снова и снова, пока пользователь не введет подходящую информацию в диалоговое окно.
* Чтение данных из файла на диске, пока не будет обнаружен конец файла.
* Поиск и подсчет числа вхождений некоторой строки символов в более длинной строке.
* Организация холостой работы программы в течение некоторого времени.
* Выполнение некоторых действий по отношению ко всем элементам массива.
* Выполнение (с использованием операторов If... Then ) некоторых действий по отношению ко всем элементам массива или коллекции, удовлетворяющим определенным критериям (массивы и коллекции рассматриваются в главе 13).
В 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)
Loop
Обнаружив оператор Do While, VBA начинает проверять условие. Если представляющее условие выражение оказывается равным False, VBA игнорирует остальную часть цикла и переходит сразу к операторам программы, следующим за оператором Loop. Если же условие принимает значение True, VBA выполняет операторы в блоке. Достигнув оператора Loop, VBA возвращается опять к оператору Do While, чтобы проверить условие снова.
Как правило, один или несколько операторов в теле цикла могут изменить значение выражения, представляющего условие, поэтому условие может стать равным False. В этом случае VBA прерывает выполнение цикла и, пропустив все его операторы, переходит к выполнению операторов, следующих за оператором Loop. Но если условие все еще равно True, операторы цикла будут выполнены еще раз.
Весь процесс повторяется до тех пор, пока в некоторый момент условие не станет равным False. Другими словами, нет ограничений на число повторений выполнения блока программного кода в цикле. В предположении, что подача энергии не прекратится и компьютер не отключается, цикл будет продолжаться вечно, если условие никогда не примет значение False.