Я создал функцию для получения свойства продукта с данным номером продукта.Моя пользовательская функция успешно работает с кодом, но с формулой Returns #VALUE
Он работает успешно, когда я запускаю модуль, но не из формулы.
Функция (отредактированный):
Public Function ÖZELLİKGETİR(İsim As String, Özellik As String) As String
Dim Okunan() As Römork
Okunan() = VERİGETİR()
Dim i
MsgBox UBound(VERİGETİR()) '0
ReDim Preserve Okunan(UBound(VERİGETİR()) + 1)
MsgBox "Reached" 'Even this is not reached
For i = 0 To UBound(Okunan())
If Not Okunan(i) Is Nothing Then
MsgBox "Reached"
If Okunan(i).ÜrünKodu = İsim Then
MsgBox "Reached"
ÖZELLİKGETİR = CallByName(Okunan(i), Özellik, VbGet)
Exit Function
End If
End If
Next i
End Function
Остальные части действительно долго, и так как он работает с макро; Мне не нужно было включать их.
Мой рабочий Macro:
Sub T()
ÖZELLİKGETİR("NM 511.136","ÜrünKodu") 'Returns "NM 511.136"
End Sub
формула:
=ÖZELLİKGETİR("NM 511.136";"ÜrünKodu") Returns #VALUE
Таблица, если вам нужны другие части: Link
Начните с ввода 'Option Explicit' в начале всех ваших модулей. Это заставит вас явно объявлять все переменные и может привести к вашей проблеме. (И вам нужно также установить «Инструменты/Референции»). Если это не помогает, поместите точки останова на каждую строку вашего UDF, чтобы увидеть, где она не работает. Сам UDF не возвращает ошибку; скорее это скорее происходит от «плохой линии» в коде. Одна из возможностей заключается в том, что 'VERİGETİR' не имеет значения в коде, когда ваш UDF вызывается с листа. –
OH MY! Переменная i не определена! Спасибо, чувак, я искал больше двух часов. –
@RonRosenfeld Но ... Его еще # ВАЛЮТ –