#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?