VBA で定義されたカスタム関数内で Excel 関数を使用するにはどうすればよいですか?
MRound や RoundDown のように機能するカスタム ラウンド関数が必要です。2500 万分の 1 に丸めます。
Public Function MRoundDown(Num As Double) As Double
Num = Num * 40000
Num = RoundDown(Num, 0)
Num = Num / 40000
End Function
私はすでに自分でそれを理解していましたが、必要なヘルプを見つけるのに時間がかかりすぎました. だからここに解決策があります。
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
パーセンテージの入力を受け入れ、残りが倍数の x パーセントよりも小さい場合にのみ RoundDown できるようにする、もう 1 つのレベルの機能が期待できます。たとえば、倍数が .25 でパーセンテージが .8 の場合、1.19 を 1.00 に丸め、1.20 を 1.25 に丸めます。