我正在尝试使用Analysis ToolPak VBA加载项中的复数函数在Excel VBA中创建自定义函数。如果我分配c = imSum(a, b)
,我会收到弹出错误"编译错误:Sub或Function not defined。"如果我将其更改为c = WorksheetFunction.imSum(a, b)
(因为我发现的很少,这导致我尝试)我没有得到弹出错误但是我在单元格中收到了#VALUE错误。将方法名称更改为虚假的内容会产生相同的结果。我有两个"分析工具库"和"分析工具库 - VBA"在Excel中检查加载项但在VBA加载项管理器中根本没有列出。这是一个语法事物还是缺少模块的东西?
... UPDATE
在检查" atvbaen.xls"之后,我使用简单格式c = imSum(a, b)
进行了此操作。在引用窗口中。我也运行了命令AddIns.Add("atvbaen.xls").Installed = True
,虽然我不知道这是否有帮助。无法获得[imSum(a, b)]
评估或Application.WorksheetFunction.ImSum(a, b)
无法正常工作。
答案 0 :(得分:2)
在工作表中,IMSUM()
将字符串作为输入,因此在 VBA 中:
Public Function whatever(s1 As String, s2 As String) As String
s3 = Application.WorksheetFunction.ImSum(s1, s2)
whatever = "Hello " & s3 & " World"
End Function
如果您无法在工作表单元格中使用IMSUB()
,则 VBA 很可能无法找到它。
修改#1:强>
Subs允许比UDF更好的调试。试试这个子并告诉我们会发生什么:
Sub HelpMePlease()
Dim s1 As String, s2 As String
Dim s3 As String
s1 = "1+1i"
s2 = "2+2i"
s3 = Application.WorksheetFunction.ImSum(s1, s2)
MsgBox s3
End Sub
答案 1 :(得分:1)
另一种选择是评估它们:
o = [IMSUM(A1,B1)]
或
a = "12+34i"
b = "67-89i"
c = Evaluate("IMSUM(" & a & "," & b & ")")
答案 2 :(得分:1)
这是一个很长的镜头,但您使用的是Excel 2003吗?如果你不是,你不必担心正在安装Analysis ToolPak / VBA ToolPak,因为这些功能都是内置的(事实上,如果你有它们,我会卸载它们)。
如果您使用的是Excel 2003,则需要安装VBA ATP,还需要查看VBA项目的参考资料并查看“atpvbaen.xls”。