рассматривать в этой книге, но обсуждается на соответствующей Webстранице ("www . s el denhous e . com/vba). Пока что достаточно объяснений по поводу того, как объявлять строки фиксированной длины. Вот пример такого объявления:
Dim strFixe d As String * 5
Объявленная таким образом переменная всегда будет содержать ровно 5 символов. Если ей присвоить более короткую строку, VBA добавит после символов этой строки нужное число пробелов. Если же переменной присвоить более длинную строку, VBA сохранит в переменной только 5 первых символов, отбросив остальные: strFixed = "abc" ' теперь strFixed содержит "abc" strFixed = "Fourscore and seven years" ' а теперь "Fours"
Глава 8. Управление потоком.
В этой главе ...
~ Использование управляющих структур для управления происходящим
~ Проверка условий с помощью условных выражений
~ Принятие решений с помощью операторов If. . .Then и SelectCase
~ Повторение выполнения действий с помощью операторов For...Next, For Each.. .Next и Do ... Loop
~ Разветвления с помощью операторов Go То
Управляющие структуры - это операторы программного кода, определяющие, какие действия будут выполняться следующими, и использующие для этого некоторое условие, действительное во время выполнения программного кода. VBA предлагает полный ассортимент достаточно мощных управляющих структур. В этой главе мы обсудим каждую управляющую структуру VBA в отдельности и рассмотрим использование таких структур на практических примерах (ну, по крайней мере, на квазипрактических).
Укрощение диких программ с помощью управляющих структур
Управляющие структуры можно разбить на три главные группы - условные операторы, циклы и операторы With.
* Условный оператор определяет, какую из ветвей программного кода выполнять, в зависимости от того, какое значение (True или False ) принимает некоторое условие. К условным операторам VBA относятся If... Then и Select Case.
* Цикл повторяет выполнение некоторого блока программного кода либо заданное число раз, либо до тех пор, пока некоторое условие не примет значение True или False. Если известно заранее, сколько раз необходимо выполнить цикл, то используйте For. . .Next, а если продолжение повторения программного кода зависит от выполнения некоторого условия, используйте Do ... Loop (этот оператор доступен в нескольких вариантах). Чтобы повторить некоторые действия по отношению к объектам в коллекции, используйте цикл For Each. . .Next, который будет обсуждаться в главе 12.
* Оператор With позволяет выполнить множество действий с одним и тем же объектом без необходимости каждый раз указывать объект (см. главу 12).
Управляющие структуры привносят в программу ясность, организацию и... структурную стройность. Они позволяют с относительной простотой проследить тот путь, который программа может выбрать при ее выполнении.
Анатомия управляющих структур
Что делает управляющую структуру структурой, так это то, что управляющая структура является не просто отдельным оператором, а целым блоком операторов. Моделью для всех управляющих структур служит базовый оператор If ... Then:
If a < b Then ' Если а меньше b, то
b = a ' положить значение b равным а.
a = с ' а затем положить а равным с.
End If ' Это все - продолжить выполнение программы.
Каркас этой структуры составляют открывающий оператор, идентифицирующий структуру и задающий условие, и оператор, означающий конец структуры. Между этими двумя операторами находятся операторы, образующие тело структуры,- операторы, которые выполняют реальную работу.
Примерно такой общий вид имеют все управляющие структуры, правда, в некоторых из них условие, используемое структурой, помещается в последний оператор, а не в первый.
Вложенные управляющие структуры
Когда речь идет об управляющих структурах, вложение означает размещение одной структуры внутри другой, еще до оператора, означающего завершение первой структуры.
VBA начинает работу со второй структурой, еще не закончив обрабатывать первую. Такое вложение оказывается необходимым при решении многих сложных реальных проблем.
Управляющие структуры можно вкладывать одну в другую до любого уровня, какой вам кажется необходимым.
В следующем примере структура Do While... Loop вложена внутрь структуры
If . . . Then, а еще одна структура If ... Then вложена в Do While ... Loop:
If a < b Then ' начало внешней структуры If...Then
Do While b > с ' начало вложенного цикла Do While...Loop
b = b - 1
If с > d Then ' начало вложенной структуры If...Then
d = a
End If ' Конец внутренней структуры If...Then
Loop ' Конец цикла Do While...Loop
End If ' Конец внешней стуктуры If...Then