#IMIĘ? błąd w programie Excel dla funkcji VBA

Robię mój pierwszy program VBA i próbuję uruchomić następującą funkcję. Funkcja sprawdza określony nazwany zakres dla pierwszego wiersza, który nie ma wartości większej niż jego wartość wiodąca, ale mniejszej niż 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

Wiem, że funkcja działa tak, jak powinna, ponieważ ręcznie sprawdziłem tabelę wartości, usunąłem komentarz z MsgBox i użyłem narzędzi do debugowania, aby wkroczyć i wyjść z każdego kroku funkcji podczas przechodzenia przez stół. Jednak gdy odwołam się do funkcji w Excelu za pomocą=findPurchase() Dostaję#NAME? błąd. Funkcja pojawia się nawet w polu autouzupełniania funkcji, gdy zaczynam wpisywać jej nazwę. Kiedy piszę inne funkcje, zarówno z parametrami, jak i bez nich, mogę odnieść się do nich po prostu dobrze, na przykład:

Function addtwo()
    addtwo = 1 + 2
End Function

Co robię źle z moją funkcją, która powoduje, że nie działa?

questionAnswers(9)

yourAnswerToTheQuestion