Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КонспектЛекций.doc
Скачиваний:
71
Добавлен:
14.05.2015
Размер:
1.26 Mб
Скачать

Обработка ошибок

Чтобы установить системное прерывание по обнаружению ошибки, поместите оператор On Error туда, где вы хотите активизировать это системное прерывание.

Sub CausesAnError()

' Direct procedure flow.

On Error GoTo ErrorHandler

' Raise division by zero error.

Err.Raise 11

Exit Sub

ErrorHandler:

' Display error information.

MsgBox "Error number " & Err.Number & ": " & Err.Description

End Sub

Другая форма оператора On Error Resume Next передает управление оператору, следующему за оператором с ошибкой. Этотоператорприводитсяниже.

Publ ic Function MyFunctionO

On Error Resume Next

If Err Then

обработка

End If

Exit Function

Resume возвращает управление программой оператору, вызвавшему ошибку, и пытается выполнить его снова. Если это приводит к повторной ошибке, то программа обработки ошибок сработает снова. Если вы используете оператор Resume, то лучше применить счетчик возникновения ошибки. По достижении неко­торого предела счетчика следует выйти из процедуры. Resume Next передает управление оператору, следующему за оператором, приведшим к ошибке. Вы мо­жете использовать этот прием только в том случае, если уверены, что ошибка — не критическая и может быть проигнорирована, или если ваш обработчик ошибок откорректирует ситуацию, вызвавшую ошибку.

Ветвления и циклы

For counter = start To end [Step step] [statements] [Exit For]

[statements]

Next [counter]

Do [{While | Until} condition] [statements] [Exit Do] [statements]

Loop

While condition

[statements]

Wend

Do [statements] [Exit Do] [statements]

Loop [{While | Until} condition]

For Each element In group

[statements]

[Exit For]

[statements]

Next [element]

For Each oGeneric In Forms

If oGeneric.Name = "Форма 3" Then Exit For

EndIf

Next oGeneric

With object [statements]

End With

With MyLabel

.Height = 20

.Width = 200

.Caption = "This is MyLabel"

End With

If condition Then [statements] [Else statements]

либо

If condition Then

[statements]

[ElseIf condition-n Then

[statements] ...

[Else

[statements]]

End If

Choose(index, choice-1[, choice-2, ... [, choice-n]])

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Speedy", "United", "Federal")

End Function

IIf(expr, truepart, falsepart)

CheckIt = IIf(TestMe>1000, "Large", "Small")

Select Case expression_переменная

[Case expression-n_значение

[statements-n]] ...

[Case Else

[elsestatements]]

End Select

Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n,value-n]])

Matchup = Switch(CityName = "London", "English", CityName = "Rome", "Italian", CityName = "Paris", "French")

Параметры процедур и функций.

Объявление:

Sub CalcFee(AcctTotal As Currency, ContractMonths As Integer)

Вызов:

CalcFee A, 24

Вы можете использовать ключевое слово Optional в определении процедуры или функции для указания того, что данный аргумент является необязательным. Необязательные(Optional)аргументыдолжныиметьтипVariant.

Sub CalcFee(AcctTotal As Currency, Optional ContractMonths As Variant)

Чтобы создать процедуру для работы с массивом аргументов, в объявлении процедуры используйте аргумент ParamArray, причем не определяя размера массива.

Public Function Calc_Order(ParamArray Сosts As Variant) As Currency