Objeto Err [VBA]

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

Err é um objeto global integrado do VBA que permite:

Ícone de aviso

Esta constante, função ou objeto é ativado através da instrução Option VBASupport 1, colocada antes do código executável do programa num módulo.


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

Propriedades


         Err.Description As String
      

A propriedade Descrição indica a natureza do erro. Description detalha as várias razões que podem estar na origem do erro. Idealmente, apresenta várias medidas a tomar para ajudar a resolver o problema e evitar que volte a ocorrer. O alias «Basic» corresponde à função Error para erros predefinidos do LibreOffice.


         Err.Number As Long
      

O código de erro associado ao erro. A propriedade predefinida do objeto Err é Number. O alias LibreOffice Basic corresponde à função Err.


         Err.Source As String
      

Fonte indica o nome da rotina que gera o erro. Fonte é uma opção para erros definidos pelo utilizador.

Métodos


         Err.Clear()
      

Redefine a descrição, Erl, o número e as propriedades de origem do erro atual. O alias LibreOffice Basic corresponde à instrução Resume.


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

Lança erros definidos pelo utilizador ou erros predefinidos. O alias básico LibreOffice corresponde à instrução Error.

Parâmetros

Número: Um código de erro definido pelo utilizador ou predefinido a ser gerado.

Ícone de nota

O intervalo de códigos de erro 0-2000 está reservado para o LibreOffice Basic. Os erros definidos pelo utilizador podem começar a partir de valores mais elevados, a fim de evitar conflitos com futuros desenvolvimentos do LibreOffice Basic.


Fonte: O nome da rotina que gera o erro. Recomenda-se um nome no formato «myLibrary.myModule.myProc».

Descrição: Uma descrição do problema que levou à interrupção do processo em execução, acompanhada das várias razões que podem estar na origem do mesmo. Recomenda-se uma lista detalhada das possíveis medidas que possam 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, Descrição:="Este é um erro definido pelo utilizador..."
             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

Ícone da dica

Um pequeno ClassModule, que encapsula o objeto VBA Err, pode disponibilizar as propriedades e métodos do Err para os módulos Basic padrão do LibreOffice.



         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", _
                 "Qualquer descrição com várias linhas para esta exceção definida pelo utilizador")
             ' o teu 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
      
Ícone de nota

A instrução Error ou um módulo de classe semelhante a uma exceção podem ser utilizados de forma intercambiável, embora este último ofereça funcionalidades adicionais.


Necessitamos da sua ajuda!

Necessitamos da sua ajuda!