2013-10-22 59 views
0

如何在VBA中定義的自定義函數中使用excel函數?如何在VBA中定義的自定義函數中使用excel函數?

我想要一個類似於MRound和RoundDown的自定義輪功能。轉移到最接近的百萬分之二十五。

Public Function MRoundDown(Num As Double) As Double 

Num = Num * 40000 
Num = RoundDown(Num, 0) 
Num = Num/40000 

End Function 
+1

你可以通過Application.WorkSheetFunction訪問很多函數,你可以嘗試類似於Num = Application.WorksheetFunction.RoundDown(yourVariableHere) – Octavio

+0

我知道了,我已經找出了答案,但是我不能將它發佈到另外7個小時。 –

回答

2

我已經想出了自己的想法,但花了很長時間才找到我需要的幫助。所以這裏是解決方案。

試圖使用RoundDown的問題是我沒有指定庫來調用該對象。應用程序是Excel,WorksheetFunction是RoundDown對象的定義。

Public Function MRoundDown(Num As Double) As Double 
Num = Num * 40000 
Num = Application.WorksheetFunction.RoundDown(Num, 0) 
Num = Num/40000 
    MRoundDown = Num 
End Function 

我進一步改善這樣的代碼:

Public Function MRD(Num As Double, Multiples As Double) As Double 
Num = Num/Multiples 
Num = Application.WorksheetFunction.RoundDown(Num, 0) 
Num = Num * Multiples 
MRD = Num 
End Function 

還有的功能,我可以希望,是能夠接受的百分比輸入,然後能夠ROUNDDOWN只有一個多層次其餘部分低於倍數的x%。例如,以.25爲倍數,以.8爲百分比,我希望它將1.19調整爲1.00和1.20至1.25。

相關問題