2012-07-23 128 views
3

我想在我的程序中使用错误函数和免费的错误函数。都没有工作。我不断收到错误Compile Error: Sub or Function not defined。但是,如果我进入一个单元格并手动尝试使用错误函数,它就会起作用。在Excel VBA代码中使用Excel公式函数(ERF,ERFC)?

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

错误函数为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)进入细胞,它会工作。

我对此很陌生,可能会丢失一些令人难以置信的简单。帮助将不胜感激!

回答

2

要在VBA中使用工作表公式,你需要把Application.WorksheetFunction.在它前面。

某些功能确实有VBA等价物,但(据我所知)没有在erf情况和erfc

+0

哦,我不知道并非所有人都有vba等值。谢谢! – TheTreeMan 2012-07-23 21:18:13

+0

example:'= FIND(':while you can use'application.worksheet.find(',it will better to use the vba function'InStr' – SeanC 2012-07-23 21:20:39

+1

这仍然没有解决插件需要 – Gaffi 2012-07-23 21:28:00

2

试试这个:

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

完全未经测试,因为我没有Excel我的Linux机器上......但我认为我得到跨越点 - 你需要使用.Formula Range对象的属性。

这里还有更多的信息:

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

3

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

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

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


此答案与设置在其他人(其是同样准确和正确的)连接在一起,无论是设置一个单元值与

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

或设置单元格公式与

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

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

+0

我肯定没有安装,谢谢你让我知道! 这个程序将被许多不同的人使用,所以我不能用它来解决这个特定的问题。 – TheTreeMan 2012-07-23 21:28:16

+0

@TheTreeMan但是如果您的最终用户没有正确安装AnalysisToolpak(非VBA版本),那么'ERF/ERFC'公式(即使直接输入到单元格中)将会不适合他们 – Gaffi 2012-07-23 21:31:07

+0

我迷惑了自己,我的意思是说我在ERF前面添加了Application.Worksheetfunction,它的工作原理如下: – TheTreeMan 2012-07-23 21:35:01