j'ai une déclaration:vba: passer une variable en erreur poignées
on error go to label
cependant je voudrais passer dans l'étiquette la variable qui a causé l'erreur
est-ce possible?
j'ai une déclaration:vba: passer une variable en erreur poignées
on error go to label
cependant je voudrais passer dans l'étiquette la variable qui a causé l'erreur
est-ce possible?
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.
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
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"
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