在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等价物,但是(据我所知)不是在erf
和erfc
的情况下
你有没有安装/引用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