Я делаю свою первую программу VBA и пытаюсь запустить следующую функцию. Функция проверяет определенный именованный диапазон для первой строки, который не имеет значения больше, чем его ведущее значение, но меньше 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
Я знаю, что функция выполняет то, на что она предназначена, потому что я вручную проверил таблицу значений, удалил комментарий из MsgBox и использовал инструменты отладки для входа и выхода из каждого из шагов функций, поскольку он прошел через стол. Однако, когда я ссылаюсь на функцию в Excel с помощью =findPurchase()
, мне присваивается ошибка #NAME?
. Функция даже появляется в окне автозаполнения функции, когда я начинаю вводить ее имя. Когда я пишу другие функции, как с параметрами, так и без них, я могу ссылаться на них просто отлично, например:
Function addtwo()
addtwo = 1 + 2
End Function
Что я делаю неправильно с моей функцией, которая заставляет ее не работать?