Oggetto Err [VBA]

Usate l'oggetto VBA Err per generare o gestire degli errori in fase di esecuzione.

Err è un oggetto globale, integrato in VBA che permette:

warning

Questa costante, funzione od oggetto viene abilitata con l'istruzione Option VBASupport 1 posizionata prima del codice eseguibile del programma all'interno del modulo.


L'oggetto VBA Err possiede le proprietà e i metodi seguenti:

Proprietà

Err.Description As String

La proprietà Description restituisce la natura dell'errore. Description indica in modo dettagliato le varie ragioni che possono aver causato l'errore. Idealmente, fornisce la procedura da seguire per risolvere il problema e prevenire la sua ricomparsa. In Basic è un alias della funzione Error per gli errori predefiniti di Collabora Office.

Err.Number As Long

Il codice di errore associato all'errore. La proprietà predefinita dell'oggetto Err è Number. L'alias di Collabora Office Basic è la funzione Err.

Err.Source As String

Source indica il nome della routine che genera l'errore. Source è opzionale per gli errori definiti dall'utente.

Metodi

Err.Clear()

Reimposta la descrizione e le proprietà Erl, il numero e la sorgente dell'errore attivo. L'alias di Collabora Office Basic è l'istruzione Resume.

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

Lancia gli errori definiti dall'utente o quelli predefiniti. L'alias di Collabora Office Basic è l'istruzione Error.

Parametri

Number: un codice di errore da generare, predefinito o definito dall'utente.

note

L'intervallo dei codici di errore da 0 a 2000 è riservato per Collabora Office Basic. Gli errori definiti dall'utente dovrebbero iniziare da valori più alti al fine di prevenire conflitti con futuri sviluppi di Collabora Office Basic.


Source: il nome della routine che genera l'errore. Si consiglia di usare un nome nel formato "miaLibreria.mioModulo.miaProc".

Description Una descrizione del problema che causa il blocco del processo in esecuzione, seguita dalle varie ragioni che possono causarlo. Si consiglia di prevedere un elenco dettagliato delle procedure che potrebbero essere utili per risolvere il problema.

Esempio:

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:="Questo è un errore intenzionale definito dall'utente …"
    Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
    Exit Sub
AlertAndExecNext:
    errTitle = "Errore "& Err &" alla riga "& Erl &" in "& Err.Source
    MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
    Resume Next
End Sub

Eccezione ClassModule

tip

Un breve ClassModule, che si interfacci con l'oggetto VBA Err, può distribuire proprietà e metodi di Err ai moduli standard di Collabora Office 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

Esempio

Function Exc As Object
    Exc = New Exception
End Function

Sub aRoutine
try:
    On Local Error GoTo catch:
    Exc.Raise(4096, "myLib.myModule.aRoutine", _
        "Qualsiasi descrizione di più righe per questa eccezione definita dall'utente")
    ' il vostro codice va qui …
finally:
    Exit Sub
catch:
    errTitle = "Errore "& Exc.Number &" alla riga "& Erl &" in "& Exc.Source
    MsgBox Exc.Description, MB_ICONSTOP, errTitle
    Resume finally
End Sub
note

L'istruzione Error o un modulo di una classe di tipo Exception possono essere usati in modo interscambiabile, anche se il secondo aggiunge ulteriori funzionalità.


Sosteneteci!