#PRÉNOM? erreur dans Excel pour la fonction VBA

Je fais mon premier programme VBA et d'essayer d'exécuter la fonction suivante. La fonction vérifie spécifiques de la plage nommée pour la première ligne qui n'a pas une valeur plus grande que la valeur principale, mais moins de 1.

Public Function findPurchase()

Dim CRT As Range
Set CRT = Range("CostRateTable")

Dim existsBetter As Boolean
existsBetter = True

Dim r As Integer
r = 2
Dim c As Integer
c = 4

While existsBetter

    Dim Found As Boolean
    FoundBetter = False

    While Not FoundBetter And c <= CRT.Columns.Count
        If CRT(r, c) > CRT(r, 2) And CRT(r, c) < 1 Then
            FoundBetter = True
        Else
            c = c + 1
        End If
    Wend


    existsBetter = FoundBetter
    If existsBetter Then
        r = r + 1
    End If
Wend

findPurchase = CRT(r, 3)
'MsgBox(findPurchase)
End Function

Je sais que la fonction qu'il est censé, car j'ai à la fois vérifiée manuellement la table des valeurs, supprimé le commentaire " de la MsgBox, et utilisé les outils de débogage et de sortie de chacune des fonctions étapes comme il est passé à travers la table. Cependant, lorsque je fais appel à la fonction dans Excel avec =findPurchase() je me suis donné un #NAME? erreur. La fonction s'affiche dans la fonction d'auto-remplir la case quand je commence à taper son nom. Quand j'écris d'autres fonctions, à la fois avec et sans paramètres, je peux faire référence, par exemple:

Function addtwo()
    addtwo = 1 + 2
End Function

Ce que je fais mal avec ma fonction qui le fait de ne pas travailler?

source d'informationauteur Teofrostus