2010-11-19 25 views

Répondre

3

D'abord, je pense que vous voulez dire:

on error goto label 

Et non, vous ne pouvez pas passer des variables à l'aide d'une commande goto. Toutefois, vous pouvez vérifier la Err.Description pour plus de détails, et si vous élevez vos propres erreurs, vous pouvez le faire:

' Raise a custom error. 
    Err.Raise Number:=vbObjectError + 1000, _ 
     Source:="TestRaiseCustomError", _ 
     Description:="My custom error description." 

Donc, si vous élevez votre erreur, vous pouvez définir la source au champ causé le problème.

Reportez-vous au Utilisez la section Augmenter la méthode de l'objet Err pour augmenter les erreurs personnalisées à this link pour plus d'informations.

4

Vous pouvez utiliser Err pour obtenir l'erreur No et description

Sub|Function SomeName() 
    On Error GoTo Err_SomeName   ' Initialize error handling. 
    ' Code to do something here. 
Exit_SomeName:       ' Label to resume after error. 
    Exit Sub|Function     ' Exit before error handler. 
Err_SomeName:       ' Label to jump to on error. 
    MsgBox Err.Number & Err.Description ' Place error handling here. 
    Resume Exit_SomeName    ' Pick up again and quit. 
End Sub|Function 
0

Je ne peux pas penser à une façon intelligente de le faire. J'ai normalement une erreur classant la classe/fonction de manière que je puisse employer "sur l'erreur goto" pour passer l'erreur au bloc inférieur puis appeler la fonction de manipulation d'erreur. L'avantage de ceci est qu'il est agréable d'avoir un gestionnaire d'erreurs centralisé mais aussi de le personnaliser pour que dans mon cas je passe le nom de la procédure qui est écrasée. Ce n'est pas joli, mais vous pourriez le faire si vous vouliez vraiment passer une collection de variables (en fonction du nombre de variables) ou configurer quelque chose pour identifier la variable en fonction du numéro de ligne (que vous devrez ajouter manuellement ...)

on error goto err 

'Code 

err: 

ErrorHandeler err, "String with Procedure name" 
0

Déclarez les variables globales et utilisez-les dans le code et dans votre code d'erreur.

Public global_variable1 As Integer 
Public global_variable2 As String 

Private Sub Btn1234_Click() 
.... 
end sub 

Err_abcd:       
.... 
End Sub