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

我正在尝试在Excel VBA中使用Analysis ToolPak VBA加载项中的复数函数进行自定义函数。 如果我分配c = imSum(a, b)出现popup错误“编译错误:子或函数未定义”。 如果我将其更改为c = WorksheetFunction.imSum(a, b) (就像我发现的那样,导致我尝试)我没有popup错误,但在单元格中出现#VALUE错误。 将方法名称更改为某些伪造的内容会产生相同的结果。 我同时在Excel中检查了“分析工具库”和“分析工具库 – VBA”加载项,但在VBA加载项pipe理器中根本没有列出。 这是一个语法的东西或缺less模块的东西?

更新…我在参考窗口中检查“atvbaen.xls”后c = imSum(a, b)使用简单的格式c = imSum(a, b)得到了这个工作。 我也运行了命令AddIns.Add("atvbaen.xls").Installed = True虽然我不知道这是否有帮助。 无法获得[imSum(a, b)]评估或Application.WorksheetFunction.ImSum(a, b)的工作。

这是一个远射,但你使用Excel 2003? 如果你没有,那么你不必担心安装的分析工具库/ VBA工具库,因为这些函数都是内置的(事实上,如果你有它们,我会卸载它们)。

如果您使用的是Excel 2003,则需要安装VBA ATP,还需要进入VBA项目的参考,并检查“atpvbaen.xls”。

在工作表中, IMSUM()将string作为input,所以在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几乎不可能find它。

编辑#1:

Subs允许比UDF更好的debugging。 试试这个子,告诉我们会发生什么事情:

 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 

另一种select是评估它们:

 o = [IMSUM(A1,B1)] 

要么

 a = "12+34i" b = "67-89i" c = Evaluate("IMSUM(" & a & "," & b & ")")