【问题标题】:How do I use an excel function inside a custom function defined in VBA?如何在 VBA 中定义的自定义函数中使用 excel 函数?
【发布时间】:2013-10-22 14:20:17
【问题描述】:

如何在 VBA 中定义的自定义函数中使用 excel 函数?

我想要一个类似于 MRound 和 RoundDown 的自定义舍入函数。舍入到最接近的百万分之 25。

Public Function MRoundDown(Num As Double) As Double

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

End Function

【问题讨论】:

  • 您可以通过Application.WorkSheetFunction访问很多功能,您可以尝试类似Num = Application.WorksheetFunction.RoundDown(yourVariableHere)
  • 我知道,我已经想出了答案,但我不能再发布 7 个小时。

标签: function vba call rounding defined


【解决方案1】:

我自己已经想通了,但是花了很长时间才找到我需要的帮助。所以这是解决方案。

尝试使用 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。例如,给定 0.25 为倍数,0.8 为百分比,我希望它舍入 1.19 到 1.00 和 1.20 到 1.25。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2010-10-19
    相关资源
    最近更新 更多