web-dev-qa-db-fra.com

Comment revenir d'une fonction en cas d'erreur dans VBA

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
19
Ashish Gupta

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
34
Sarfraz

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".)

6
user4588747

Vous pouvez utiliser Exit Function après votre MsgBox instruction

1
Alex P

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.

0
mwolfe02