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

我试图在我的程序中使用错误函数和免费的错误函数。 都没有工作。 我不断收到错误Compile Error: Sub or Function not defined 。 但是,如果我进入一个单元格,并手动尝试使用错误的function,它的工作原理。

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

误差函数是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)到一个单元格中,它将工作。

我对此很陌生,可能错过了一些非常简单的事情。 帮助将不胜感激!

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

一些函数具有vba等价物,但是(据我所知)不是在erferfc的情况下

你有没有安装/引用VBA加载项的分析工具包? (查找atpvbaen.xls)

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

加载项是MSFT的标准,但并不总是默认设置。 如果您可以正常使用Excel,那么您至less已经设置了Excel版本。 因此,无论您如何实现/使用该function,使用它看起来像您想要做的一切都需要加载项。 意思是,如果你想与其他人分享,他们将需要安装/激活插件。


将这个答案和其他提供的答案(同样准确和正确)连接在一起,或者用单元格值来设置

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

或设置一个单元格公式

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

将需要使用加载项的最终用户。

尝试这个:

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

完全没有经过testing,因为我的Linux机器上没有Excel …但是我认为我越来越重要了 – 您需要使用Range对象的.Formula属性。

这里有更多的信息:

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