Objeto Err VBA

Conteúdo
Índice 🔎︎

# Objeto Err [VBA]

Utilize o objeto VBA Err para levantar ou tratar erros de execução.

Err é um objeto global integrado do VBA que permite:

- levantar erros Basic predefinidos

- para lançar exceções definidas pelo usuário

- para nomear a rotina que originou o erro

- para descrever o erro e sua possível resolução

Esta constante, função ou objeto se ativa com a instrução Option VBASupport 1 colocada antes do código executável do programa em um módulo.

O objeto VBA Err possui as seguintes propriedades e métodos:

## Propriedades

             Err.Description As String

A propriedade Description fornece a natureza do erro. Description detalha as várias razões que podem ser a causa do erro. Idealmente fornece várias possibilidades de ações para resolver o problema e prevenir novas ocorrências. Seu alias é a função Basic Error para erros predefinidos do LibreOffice.

             Err.Number As Long

O código de erro associado ao erro. A propriedade padrão do objeto Err é Number. O alias no LibreOffice Basic é a função Err.

             Err.Source As String

Source indica o nome da rotina que produziu o erro. Source é opcional para erros definidos pelo usuário.

## Métodos

             Err.Clear()

Redefine as propriedades Description, Erl, Number e Source do erro atual. O alias do LibreOffice Basic é a instrução Resume.

             Err.Raise(Number As Long, Optional source As String, Optional description As String)

Lança erros definidos pelo usuário ou erros predefinidos. O alias no LibreOffice Basic é a instrução Error.

### Parâmetros

Number: o código do erro definido pelo usuário ou predefinido a ser levantado.

O intervalo de códigos de erro de 0 a 200 é reservado para o LibreOffice Basic. Erros definidos pelo usuário podem começar com valores maiores para prevenir colisões com os desenvolvimentos futuros do LibreOffice Basic.

Source: O nome da rotina que levantou o erro. Recomenda-se um nome na forma "minhaBib.meuModulo.minhaProc".

Description: Uma descrição do problema que levou à parada do processo em execução, acompanhado dos vários motivos que podem o ter causado. Recomenda-se uma lista detalhada das possíveis soluções para ajudar a resolver o problema.

### Exemplo:

             Option VBASupport 1

             Sub ThrowErrors
                 Dim aDesc As String : aDesc = Space(80)
                 On Local Error GoTo AlertAndExecNext
                 Err.Raise(91, "ThrowErrors", Error(91))
                 Err.Raise 2020, Description:="Este é um erro definido pelo usuário intencional …"
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "Erro "& Err &" na linha "& Erl &" em "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## Exceção ClassModule

Um ClassModule curto, que envolve o objeto VBA Err, pode distribuir as propriedades e métodos Err para módulos padrão do LibreOffice Basic.

             Option ClassModule
             Option VBASupport 1

             Public Property Get Description As String
                 Description = Err.Description
             End Property
             Public Property Get Number As Long
                 Number = Err.Number
             End Property
             Public Property Get Source As String
                 Source = Err.Source
             End Property
             Public Sub Clear
                 Err.Clear
             End Sub
             Public Sub Raise( number As Long, Optional Source As String, Optional Description As String)
                 Err.Raise number, Source, Description
             End Sub

## Exemplo

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "Uma descrição com várias linhas para esta exceção definida pelo usuário"
                 ' seu código vai aqui
             finally:
                 Exit Sub
             catch:
                 errTitle = "Erro "& Exc.Number &" na linha "& Erl &" em "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

A instrução Error ou um módulo de classe tipo Exception podem ser utilizados de forma intercambiada, enquanto que o último tem características extras.

Tópicos relacionados

Funções de manipulação de erros

Instrução Option ClassModule

Instrução Option VBASupport

Serviço ScriptForge.Exception