如何在Excel 2003 VBA中使用复杂函数?

如何在Excel 2003 VBA中使用复杂函数?,vba,excel,Vba,Excel,我正在尝试使用分析工具Pak VBA加载项中的复数函数在Excel VBA中创建自定义函数。如果我分配c=imSum(a,b)我会得到一个弹出错误“编译错误:未定义子函数或函数”。如果我将其更改为c=WorksheetFunction.imSum(a,b)(因为我在这方面发现的很少,所以我尝试了一下),我没有得到弹出错误,但我在单元格中得到了一个#值错误。将方法名称更改为伪造的名称会产生相同的结果。我在Excel中检查了“AnalysisToolPak”和“AnalysisToolPak-VBA

我正在尝试使用分析工具Pak VBA加载项中的复数函数在Excel VBA中创建自定义函数。如果我分配
c=imSum(a,b)
我会得到一个弹出错误“编译错误:未定义子函数或函数”。如果我将其更改为
c=WorksheetFunction.imSum(a,b)
(因为我在这方面发现的很少,所以我尝试了一下),我没有得到弹出错误,但我在单元格中得到了一个#值错误。将方法名称更改为伪造的名称会产生相同的结果。我在Excel中检查了“AnalysisToolPak”和“AnalysisToolPak-VBA”加载项,但在VBA加载项管理器中根本没有列出任何加载项。这是语法问题还是缺少模块问题

更新。。。
在参考窗口中选中“atvbaen.xls”之后,我使用了简单的格式
c=imSum(a,b)
。我还运行了命令
AddIns.Add(“atvbaen.xls”).Installed=True
,但我不知道这是否有帮助。无法使
[imSum(a,b)]
评估或
应用程序.WorksheetFunction.imSum(a,b)
工作。

在工作表中,
imSum()
将字符串作为输入,因此在VBA中:

如果您不能在工作表单元格中使用
IMSUB()
,那么VBA也很难找到它

编辑#1:

SUB允许比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

在工作表中,
IMSUM()
将字符串作为输入,因此在VBA中:

如果您不能在工作表单元格中使用
IMSUB()
,那么VBA也很难找到它

编辑#1:

SUB允许比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

另一种选择是对其进行评估:

o = [IMSUM(A1,B1)]


另一种选择是对其进行评估:

o = [IMSUM(A1,B1)]


这有点遥不可及,但您使用的是Excel 2003吗?如果没有,您就不必担心安装了Analysis ToolPak/VBA ToolPak,因为这些功能都是内置的(事实上,如果您有这些功能,我会卸载它们)


如果您使用的是Excel 2003,您需要安装VBA ATP,还需要查看VBA项目的参考资料并选中“atpvbaen.xls”。

这有点遥不可及,但您使用的是Excel 2003吗?如果没有,您就不必担心安装了Analysis ToolPak/VBA ToolPak,因为这些功能都是内置的(事实上,如果您有这些功能,我会卸载它们)



如果您使用的是Excel 2003,您需要安装VBA ATP,还需要查看VBA项目的参考资料并选中“atpvbaen.xls”。

您可以发布更多代码吗?就这样。函数ctest(a,b)ctest=WorksheetFunction.imSumx(a,b)End函数有一个“x”太多:将
imSumx
更改为
imSum
提到在问题中,更改为
imSumx
以显示未知方法没有错误弹出,与
imSum
相同的值错误
IMSUM
IMSUM
同样的东西代码对我有效,你确定你输入了正确的标准吗?你能发布更多的代码吗?就是这样。函数ctest(a,b)ctest=WorksheetFunction.imSumx(a,b)End函数有一个“x”太多:将
imSumx
更改为
imSum
提到在问题中,更改为
imSumx
以显示未知方法没有错误弹出,与
imSum
相同的值错误
IMSUM
IMSUM
相同的内容代码对我有效,你确定你输入了正确的标准吗?谢谢你的详细回答。我完全复制了这个,得到了相同的#值错误。如果我删除第二行并将第三行从
s3
更改为
s1
,那么我会得到
Hello 12-23i World
,显然问题出在我的VBA分析工具包上。不知道现在该做什么,是的,我可以在Excel中使用
IMSUM
IMSUB
很好,只是在VBA中没有apparantly@robisrob请参阅我的编辑#1运行时错误438对象不支持此属性或方法-非常清楚,当问题在我不理解的情况下自行解决时,我不喜欢添加inI。我现在让它为
c=imSum(s1,s2)
而不是
c=Application.WorksheetFunction.imSum(s1,s2)
c=[imSum(s1,s2)]
感谢您的详细回答。我完全复制了这个,得到了相同的#值错误。如果我删除第二行并将第三行从
s3
更改为
s1
,那么我会得到
Hello 12-23i World
,显然问题出在我的VBA分析工具包上。不知道现在该做什么,是的,我可以在Excel中使用
IMSUM
IMSUB
很好,只是在VBA中没有apparantly@robisrob请参阅我的编辑#1运行时错误438对象不支持此属性或方法-非常清楚,当问题在我不理解的情况下自行解决时,我不喜欢添加inI。我现在让它为
c=imSum(s1,s2)
工作,但不是
c=Application.WorksheetFunction.imSum(s1,s2)
c=[imSum(s1,s2)]
是的。喜欢2003年的小按钮。我找到了这个参考并检查了它,但它没有改变任何东西。仍有空的加载项管理器。有很高的期望,也许这是一个必要的步骤,但仍然没有。你怎么知道这个神秘的参照物?!现在让它工作,但很难说这是否有帮助。谢谢是的,我是。喜欢2003年的小按钮。我找到了这个参考并检查了它,但它没有改变任何东西。仍有空的加载项管理器。有很高的期望,也许这是一个必要的步骤,但仍然没有。你怎么知道这个神秘的参照物?!现在让它工作,但很难说这是否有帮助。谢谢有趣的方法,但不是必需的,很难使用。通常返回一个零