RoundDown的论点在公共职能上是无效的

我正在调用一个函数,我需要舍入一个值,但它有一个编译错误:参数无效.RoundDown在下面的代码中:

Public Function AbilityMod(ByVal x As Integer) As Integer AbilityMod = WorksheetFunction.RoundDown((x - 10) / 2) End Function 

我是VBA新手,所以也许我错过了一些明显的东西?

你错过了第二个强制性的论点, Arg2 ,即你想把你的数字Arg2的位数:

 Public Function AbilityMod(ByVal x As Integer) As Integer AbilityMod = WorksheetFunction.RoundDown((x - 10) / 2,0) End Function 

我想你想要0,因为你声明你的函数返回为Integer

在函数的官方文档中find更多信息。

但是,如果您使用的参数不是0 (例如, 1 ),您将无论如何将获得一个四舍五入的数字,因为您的函数返回As Integer 。 你可以用13来testing它:

 (x-10)/2 --> 1.5 RoundDown((x-10)/2,1) --> 1.5 AbilityMod --> 2 (because AbilityMod As Integer --> 1.5 is rounded to 2).