如何在Excel 2003 VBA中使用复杂功能?

时间:2016-09-27 19:17:08

标签: excel vba excel-vba

我正在尝试使用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)无法正常工作。

3 个答案:

答案 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

enter image description here

如果您无法在工作表单元格中使用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”。