【发布时间】:2017-05-15 10:31:55
【问题描述】:
我创建了一个函数来获取具有给定产品编号的产品属性。
当我从模块运行时它成功运行,但不是从公式运行。
功能(已编辑):
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
其他部分真的很长,因为它与宏一起使用;我不需要包括那些。
我的工作宏:
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放在所有模块的开头。这将迫使您显式声明所有变量,并可能导致您遇到问题。 (而且你应该设置Tools/References来要求它)。如果这没有帮助,请在 UDF 中的每一行上放置断点以查看失败的位置。 UDF 本身没有返回错误;相反,它更有可能来自代码中的“坏行”。一种可能性是,当从工作表调用 UDF 时,VERİGETİR在代码中没有值。 -
天哪!变量 i 未定义!谢谢老兄,我搜索了两个多小时。
-
@RonRosenfeld 但是......它仍然是#VALUE
-
如果你设置了
Option Explicit,那么继续我评论中的第二步。 -
在 Excel 中,
UDF(称为单元格公式的函数)无法完成普通函数所能做的所有事情,请参阅 support.microsoft.com/en-us/kb/170787。
标签: excel vba function macros formula