我正在尝试在我的程序中使用错误功能和免费错误功能。两者都没有工作。我一直收到错误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)
,它就会起作用。
我对此很新,可能会遗漏一些非常简单的东西。非常感谢帮助!
答案 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等价物,但(据我所知)不是erf
和erfc