在Excel VBA代码中使用Excel公式函数(ERF,ERFC)?

时间:2012-07-23 21:04:51

标签: excel vba excel-vba

我正在尝试在我的程序中使用错误功能和免费错误功能。两者都没有工作。我一直收到错误Compile Error: Sub or Function not defined。但是,如果我进入单元格并手动尝试使用错误功能,则可以正常工作。

为什么?我如何在实际代码中使用它?

错误函数为ERF(x),免费错误函数为ERFC(x)

以下是一些不起作用的例子:

Sub SeriouslyWHYIsntThisWorking()
    x = 3
    Range("A1") = Erf(x)
End Sub

即使这不起作用:

Sub PleaseWork()
    Range("A1") = Erfc(1)
End Sub

但是如果我进入Excel并在单元格中输入=ERF(3)=ERFC(1),它就会起作用。

我对此很新,可能会遗漏一些非常简单的东西。非常感谢帮助!

3 个答案:

答案 0 :(得分:3)

您是否已安装/引用了VBA加载项的Analysis Toolpak? (寻找atpvbaen.xls)

ERF函数是该加载项的一部分,它有两个版本(一个用于Excel函数,一个用于VBA),你需要正确的一个设置和您的项目引用它是可用的。

加载项是MSFT的标准版,但默认情况下并不总是设置。如果您可以在Excel中正常使用它,那么您已经设置了至少Excel版本。因此,无论您如何实现/使用该功能,使用它看起来像您想要做的将需要加载项。这意味着,如果您想与其他任何人分享,他们将需要安装/激活加载项。


将此答案与提供的其他答案(同样准确和正确)链接在一起,使用

设置单元格值

Range("A1").value = Application.WorksheetFunction.ERF(x)

或使用

设置单元格公式

Range("A1").Formula = "=Erfc(" + x + ")"

将要求最终用户使用加载项。

答案 1 :(得分:2)

试试这个:

Sub ThisShouldWorkNow()
    x = 3
    formula = "=Erfc(" + x + ")"
    Range("A1").Formula = formula
End Sub

完全未经测试,因为我的Linux机器上没有Excel ......但我认为我已经明白了 - 您需要使用Range对象的.ormula属性。

这里有更多信息:

http://msdn.microsoft.com/en-us/library/office/gg192736.aspx

答案 2 :(得分:2)

要在vba中使用工作表公式,您需要将Application.WorksheetFunction.放在它前面。

某些函数确实有vba等价物,但(据我所知)不是erferfc