【问题标题】:Erf() in VBA-Excel code doesn't work in Excel 2003VBA-Excel 代码中的 Erf() 在 Excel 2003 中不起作用
【发布时间】:2013-03-01 15:21:36
【问题描述】:

我需要在我的 VBA Excel 程序中计算误差函数 Erf()。我已经实现了类似的东西:

aux_A = -Application.WorksheetFunction.Erf(p)

以前,在 Excel 2007 中,我安装了 Analysis Toolpak 插件,它运行良好,但在 Excel 2003 中它不起作用(并且也安装了插件)。

有什么问题?

(请注意,我想在 VBA 代码中使用结果,而不是在 Excel 工作表中)。

谢谢!

【问题讨论】:

  • “不起作用”是什么意思?你得到一个编译时错误吗?你得到错误的结果吗?
  • 您确定 Excel 2003 分析工具包中提供了该功能吗?
  • Excel 是否正确加载了 Excel 2003 分析工具包?
  • Heinzi: 错误是: erro '438' in execution time, 对象不承认这个属性或方法。 Philip:是的,我检查过了,分析工具包已正确加载到我的 Excel 2003 SP3 中。这个工具包中似乎没有这个功能,但是,它在哪里?在某处可用吗?

标签: excel add-in vba


【解决方案1】:

在 Excel 2007 之前,Erf 位于分析工具包中,因此您必须直接调用函数(没有 WorksheetFunction 部分)

aux_A = -Erf(p)

从 Excel 2007 开始,他们将许多函数移入 WorksheetFunction 库,这就是您现在必须使用 WorksheetFunction.Erf(p) 的原因。

在 VBA 编辑器中,按 F2 并搜索 Erf。您会看到库和类在 2007 年之前和之后的版本中有所不同。

【讨论】:

  • 对不起,但是得到 aux_A=-Erf(p) 它会给我一个编译错误(在 Excel 2003 Professional Edition SP3 和安装的 ToolPack 中)。此外,如果我将“Erf”放在 VBA 编辑器中,它不会给我任何结果。
  • @juanjosanz 您是否同时安装并检查了“Analysis Tollpack”和“Analysis Tollpack - VBA”?
  • 是的 CaBieberach,它们都已安装和检查,所以我迷路了。有什么建议吗?
【解决方案2】:

Erf函数不是带2个参数(上限、下限)吗?

【讨论】:

  • 实际上可以,但不必这样做。 Erf 的 excel 实现允许从零以外的下限以及单参数实现进行积分。即在excel中Erf(2,3)等价于(Erf(3)-Erf(2))
【解决方案3】:
  1. 在加载项(工具 -> 加载项)中添加“分析工具包 - VBA”
  2. 在 VBA 项目编辑器中添加对 atpvbaen.xla 的引用(工具 -> 参考)
  3. 试试:

    n = Erf(0.5)

为我工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多