Чтение онлайн

на главную

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

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

А если дело обстоит таким образом, то программе приходится работать только с одним значением - со значением, возвращаемым свойством

Туре.
– но сравнивается это значение с несколькими из допустимых. Так что Select Case - это как раз то, что для нашего случая доктор прописал.

Первое применение оператора Case в данном примере эквивалентно применению If objRollOf Film.Type = "Слайдовая" Then, т.е. если свойство Туре объекта равно "Слайдовая", то программа выполняет следующий оператор, в противном случае она перейдет ко второму оператору Case.

Заметьте, что знака операции, присутствие которого кажется на первый взгляд логичным, в критериях нет. Причина в том, что в операторах Select Case равенство в качестве операции сравнения просто подразумевается.

Оператор Case Else

Если значение свойства Туре не будет удовлетворять ни одному из критериев в операторах Case, то управление перейдет к оператору Case Else, который всегда находится в самом конце структуры Select Case. В предыдущем примере результатом этого будет сообщение об ошибке "Неизвестный тип пленки". Оператор Case Else необязателен, поскольку вполне вероятно, что вас устроит отсутствие всякой реакции на неудовлетворение всех критериев. Как и в данном примере, обычно нет никакой необходимости использовать оператор Case Else, разве что для того, чтобы программист проинформировал самого себя о не предусмотренных им значениях, хранящихся в программе.

Дополнительные сведения об операторе Case

В предыдущем примере критерии, заданные в операторах Case, были просто цветочками, детскими вопросами типа "Равно ли свойство Туре тому-то и тому-то?" Но с помощью оператора Case вы можете задавать и значительно более сложные критерии.

Это проще всего показать на примере с числами. Предположим, ваш оператор 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

Все возможные версии оператора Do ... Loop предназначены для повторения заданного блока программного кода неопределенно долго, пока не будет выполнено некоторое условие.

Для того чтобы выяснить, продолжать цикл или нет, оператор Do ... Loop оценивает заданное условное выражение типа условных выражений, используемых для оператора If... Then и описанных выше в разделе "Курс на использование условных выражений".

Случаев, когда структуры Do... Loop полезны, просто не счесть. Вот несколько примеров.

* Отображение сообщения об ошибке снова и снова, пока пользователь не введет подходящую информацию в диалоговое окно.

* Чтение данных из файла на диске, пока не будет обнаружен конец файла.

* Поиск и подсчет числа вхождений некоторой строки символов в более длинной строке.

* Организация холостой работы программы в течение некоторого времени.

* Выполнение некоторых действий по отношению ко всем элементам массива.

* Выполнение (с использованием операторов If... Then ) некоторых действий по отношению ко всем элементам массива или коллекции, удовлетворяющим определенным критериям (массивы и коллекции рассматриваются в главе 13).

Поделиться:
Популярные книги

Измена. Я отомщу тебе, предатель

Вин Аманда
1. Измены
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Измена. Я отомщу тебе, предатель

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Мимик нового Мира 6

Северный Лис
5. Мимик!
Фантастика:
юмористическая фантастика
попаданцы
рпг
5.00
рейтинг книги
Мимик нового Мира 6

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Темный Патриарх Светлого Рода 4

Лисицин Евгений
4. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 4

Стрелок

Астахов Евгений Евгеньевич
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Стрелок

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Архил…? Книга 3

Кожевников Павел
3. Архил...?
Фантастика:
фэнтези
попаданцы
альтернативная история
7.00
рейтинг книги
Архил…? Книга 3

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Лорд Системы 11

Токсик Саша
11. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 11

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2