我正在调用一个函数,我需要向下舍入一个值,但它有一个编译错误:参数对于.RoundDown在以下代码中无效:
Public Function AbilityMod(ByVal x As Integer) As Integer
AbilityMod = WorksheetFunction.RoundDown((x - 10) / 2)
End Function
我是VBA的新手所以也许我错过了一些明显的东西?
答案 0 :(得分:2)
您错过了第二个强制性参数Arg2
,即您希望将数字向下舍入的位数:
Public Function AbilityMod(ByVal x As Integer) As Integer
AbilityMod = WorksheetFunction.RoundDown((x - 10) / 2,0)
End Function
我想你希望它为0,因为你声明函数的返回为Integer
。
在该函数的官方documentation中查找更多内容。
但是,如果您使用的参数不同于0
(例如,1
),那么无论如何都会得到一个舍入数字,因为您的函数正在返回As Integer
。您可以使用13
测试它:
(x-10)/2 --> 1.5
RoundDown((x-10)/2,1) --> 1.5
AbilityMod --> 2 (because AbilityMod As Integer --> 1.5 is rounded to 2).