Objet Err [VBA]

Utilisez l'objet Err VBA pour déclencher ou gérer les erreurs d'exécution.

Err est un objet global VBA intégré qui permet :

warning

Cette constante, fonction ou objet est activé avec l'instruction Option VBASupport 1 placée avant le code exécutable dans un module.


L'objet VBA Err a les propriétés et méthodes suivantes :

Propriétés


         Err.Description As String
      

La propriété Description donne la nature de l'erreur. Description détaille les différentes raisons pouvant provoquer l'erreur. Idéalement, elle fournit les multiples actions visant à résoudre le problème et empêcher sa réapparition. Son alias Basic est la fonction Error pour les erreurs prédéfinies de LibreOffice.


         Err.Number As Long
      

C'est le code d'erreur associé à l'erreur. La propriété par défaut de l'objet Err est Number. L'alias LibreOffice Basic est la fonction Err.


         Err.Source As String
      

Source indique le nom de la routine qui produit cette erreur. Source est une option pour les erreurs définies par l'utilisateur.

Méthodes


         Err.Clear()
      

Réinitialise la descriptions, les propriétés Erl, de nombre et de la source de l'erreur active. L'alias LibreOffice Basic est l'instruction Resume.


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

Lance des erreurs définies par l'utilisateur ou des erreurs prédéfinies. L'alias LibreOffice Basic est l'instruction Error.

Paramètres

Number: un code d'erreur pré-défini ou défini par l'utilisateur à élever.

note

La plage de codes d'erreur 0-2000 est réservée à LibreOffice Basic. Les erreurs définies par l'utilisateur peuvent commencer à partir de valeurs plus élevées afin d'éviter une collision avec les développements futurs de LibreOffice Basic.


Source: le nom de la routine provoquant l'erreur. Un nom sous la forme de "myLibrary.myModule.myProc" est recommandé.

Description: une description du problème entraînant l'arrêt du processus en cours, accompagnée des différentes raisons qui peuvent le provoquer. Une liste détaillée des actions possibles pouvant aider à résoudre le problème est recommandée.

Exemple :


         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:="This is an intended user-defined error …"
             Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
             Exit Sub
         AlertAndExecNext:
             errTitle = "Error "& Err &" at line "& Erl &" in "& Err.Source
             MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
             Resume Next
         End Sub
      

Exception ClassModule

tip

Un courtClassModule, qui encapsule l'objet VBA Err, peut distribuer les propriétés et méthodes Err des modules LibreOffice Basic standards.



         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
      

Exemple


         Function Exc As Object
             Exc = New Exception
         End Function
          
         Sub aRoutine
         try:
             On Local Error GoTo catch:
             Exc.Raise(4096, "myLib.myModule.aRoutine", _
                 "Toute description sur plusieurs lignes pour cette exception définie par l'utilisateur")
             ' votre code ici…
         finally:
             Exit Sub
         catch:
             errTitle = "Error "& Exc.Number &" at line "& Erl &" in "& Exc.Source
             MsgBox Exc.Description, MB_ICONSTOP, errTitle
             Resume finally
         End Sub
      
note

L'instruction Error ou un module de classe de type Exception peut être utilisé de manière interchangeable, tandis que ce dernier ajoute des fonctionnalités supplémentaires.


Aidez-nous !