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

на главную

Жанры

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

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

Шрифт:

Sub ListOddNumbers

Dim strOddNumbers As String

For F = 1 To 33 Step 2

StrOddNumbers = strOddNumbers 5 F & " "

Next F MsgBox "Нечетными числами между 1 и 33 являются: " & _

Chr(13) & strOddNumbers

End Sub

В этом примере цикл создает строку, содержащую все нечетные числа из диапазона, определяемого значениями начало и конец цикла. Значение переменной-счетчика при каждом проходе цикла увеличивается на 2 - шаг, заданный значением аргумента Step. Поскольку начальным значением задано 1, F

всегда будет нечетным, что упрощает задачу программирования операторов внутри цикла.

В общем, аргумент Step сообщает VBA, как вычислять следующее значение счетчика по достижении конца цикла. Обычно, когда аргумент Step явно не указан, счетчик увеличивается на 1. Указав аргумент Step, вы можете задать другое значение, на которое нужно будет увеличивать счетчик. При этом можно задать и отрицательное значение, тогда счетчик будет уменьшаться.

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

Управление потоком с помощью Go То

Если ваша программа вдруг стала неуправляемой, укажите ей, куда идти, - с помощью передачи управления другому участку программного кода в процедуре. Оператор Go To в совокупности со специальным оператором метки в месте назначения позволяет по желанию перемещаться от одной точки в процедуре к другой. Метка- это оператор, просто отмечающий некоторое место в программном коде. Чтобы задать метку, напечатайте ее имя (согласно правилам создания имен в VBA), а после него - двоеточие.

Пример использования Go To

В следующем примере оператор Go To направляет поток программы из главной части процедуры к метке Special Value, если встречается необычное значение:

Function GoToExample (ItemNumber As Integer )

Dim intR As Integer

Select Case ItemNumber

Case 2412

Go To SpecialValue

Case Is < CutOffValue

DoSomething

Case >= CutOffValue

DoHardlyAnything

End Select

( операторы, выполняющие какое-то действия)

GoToExample = intR

Exit Function

SpecialVal ue:

DoSomethingSpecial

GoToExample = intR

End Function

Обратите внимание на формат метки SpecialValue - она размещается в своей отдельной строке и заканчивается двоеточием. Двоеточие здесь просто обязательно - при его отсутствии VBA непременно расстроится и выведет сообщение об ошибке.

Оправдания Go To

Использование оператора Go To считается в программировании признаком низкого качества. Дело в том, что использование этого оператора превращает программный код в "спагетти", когда путь выполнения программы скачет туда-сюда через всю программу. "Спагетти" трудно распутывать, а программный код по мере увеличения в нем числа операторов Go To быстро становится невозможным для чтения. Всегда, когда это возможно, используйте управляющие структуры, позволяющие программе выполняться последовательно.

Но иногда оператор Go To оказывается самым естественным способом для того, чтобы заставить программу делать

то, что вам нужно. Может быть, ваша голова уже до предела нагружена невероятным сплетением вложенных циклов и условных операторов, требующих сложного множества критериев. В таких случаях оператор Go To проложит прямую дорогу к выходу из лабиринта, только не используйте его слишком часто.

Глава 9. "Бронированный" программный код: отладка и устранение ошибок.

В этой главе ...

~ Каталог всевозможных ошибок, стремящихся "одурачить" вашу программу

~ Принципы борьбы с ошибками

~ Замечательная возможность - режим паузы

~ Все средства отладки редактора Visual Basic, включая команды Step и окна Immediate, Locals и Watch

~ Использование редактора Visual Basic как калькулятора с помощью окон Immediate и Watch

~ Изощренные приемы отладки, уменьшающие риск появления ошибок при выполнении программы

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

Все возможные неприятности происходят обязательно

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

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

* Логические ошибки. Изъяны проектирования программы, в результате которых программа делает то, что вы не планировали, или не делает того, что вы планировали.

* Ошибки выполнения. Приводят к остановке выполнения программы вследствие либо логических ошибок, либо возникновения ситуации, не предусмотренной в программе (подробно об этом - ниже, в подразделе "Откуда берутся ошибки выполнения").

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

Исправление синтаксических ошибок

Если вы допустите синтаксическую ошибку, редактор Visual Basic сообщит вам об этом почти сразу же, не дожидаясь, когда вы дадите указание выполнить программу. Если вы напечатаете что-то такое, что редактор Visual Basic не поймет, символы в строке с непонятным программным кодом станут красными, а как только точка ввода перейдет из этой строки на другую, вы получите сообщение, подтверждающее наличие ошибки и с некоторым разъяснением ее (при условии, что на вкладке Editor (Редактор) диалогового окна Options (Параметры) отмечен флажок Auto Syntax Check (Автоматическая проверка синтаксиса); чтобы открыть это диалоговое окно, выберите Tools=Options из меню). Например, если вы напечатаете If х = 3 и забудете напечатать Then, появится сообщение Compile error : Expected: Then or GoTo (Ошибка компиляции: ожидалось Then или GoTo).

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

Возрождение Феникса. Том 2

Володин Григорий Григорьевич
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возрождение Феникса. Том 2

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Сумеречный Стрелок 4

Карелин Сергей Витальевич
4. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 4

Аномалия

Юнина Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Аномалия

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Диверсант

Вайс Александр
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Диверсант

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI

Дело Чести

Щукин Иван
5. Жизни Архимага
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дело Чести

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

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

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

Авиатор: назад в СССР 10

Дорин Михаил
10. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 10

Курсант: Назад в СССР 11

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

Адепт. Том 1. Обучение

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Адепт. Том 1. Обучение