Je suis nouveau sur VBA et je veux revenir d'une fonction quand je vois une erreur. Pas en mesure de le faire. Des pointeurs?
Function GetEditboxValue(control As IRibbonControl, text As String) As String
If Not IsMissing(text) Then
If Not IsNumeric(text) Then
MsgBox "Please enter numeric value only."
' I WANT TO RETURN HERE
End If
End If
If control.id = "xyz" Then
spaceAboveTable = text
End If
End Function
Vous devez mettre EXIT FUNCTION
là pour sortir de l'exécution:
Function GetEditboxValue(control As IRibbonControl, text As String) As String
If Not IsMissing(text) Then
If Not IsNumeric(text) Then
MsgBox "Please enter numeric value only."
EXIT FUNCTION
End If
End If
If control.id = "xyz" Then
spaceAboveTable = text
End If
End Function
Dans un sens généralisé (je ne dis en fait rien de ce qui n'a pas déjà été dit):
Function Foo(inputVar As Double) As Double
On Error GoTo ErrorHandler
' Code assigning something to returnValue and defaultOutput
Foo = returnValue
Exit Function
ErrorHandler:
Foo = defaultOutput
End Function
Aucune raison pour que ce soit double, bien sûr.
(Modifié parce que j'avais une deuxième "fonction de sortie" au lieu de "fonction de fin".)
Vous pouvez utiliser Exit Function
après votre MsgBox
instruction
Une autre option consiste à déclencher explicitement une erreur à l'aide de Err.Raise
. Puisque vous n'avez pas de gestionnaire d'erreurs dans cette fonction (c'est-à-dire pas de On Error ...
ligne) l'erreur sera propagée à travers la pile d'appels jusqu'à ce qu'elle s'exécute dans un gestionnaire d'erreurs.