2012-07-23 131 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