Kur*_*eek 6 excel vba excel-vba
我想在Visual Basic中定义一个函数,它在给定的括号中计算所得税.输入应该是收入,边际税率,下括号边界,以及 - 可选 - 上括号边界.(对于顶部支架,没有上边界).
这是我如何去做的.首先,我定义了一个"ramp"函数,如下所示:
Public Function ramp(x)
ramp = (x + Abs(x)) / 2
End Function
Run Code Online (Sandbox Code Playgroud)
这基本上与IF(x <0,0,x)相同.然后我将税收函数(荷兰语)定义为
Public Function schijfbelasting(inkomen, ondergrens, bovengrens, tarief)
schijfbelasting = ramp(tarief * (inkomen - ondergrens)) - ramp(tarief * (inkomen - bovengrens))
End Function
Run Code Online (Sandbox Code Playgroud)
这里"inkomen"=收入,"ondergrens"=下括号边界,"bovengrens"=上括号边界,"tarief"=边际税率,输出"schijfbelasting"=指定括号中的税.
这一切都很好,除了我想使用"bovengrens"(上括号边界)可选
Optional bovengrens
Run Code Online (Sandbox Code Playgroud)
在Matlab中,我会使用"nargin"(参数个数)函数来执行以下操作:
Public Function schijfbelasting(inkomen, ondergrens, Optional bovengrens, tarief)
If nargin==4
schijfbelasting = ramp(tarief * (inkomen - ondergrens)) - ramp(tarief * (inkomen - bovengrens))
Elseif nargin==3
schijfbelasting = ramp(tarief*(inkomen-ondergrens))
End If
End Function
Run Code Online (Sandbox Code Playgroud)
但是,我不知道在Visual Basic中类似于"nargin"的函数.它也可能是"如果论证"bovengrens"被定义".有人知道如何解决这个问题吗?提前致谢.
PS我知道我可以通过填充顶部括号中的括号"边界"的非常大的数字来使代码"工作",但我不认为这种优雅的编码.
您可以使用VBA的IsMissing功能来测试可选参数.这是一个例子:
Public Sub OptionalArg(arg1, Optional arg2)
Debug.Print arg1; IIf(IsMissing(arg2), "missing", arg2)
End Sub
Run Code Online (Sandbox Code Playgroud)
像这样测试:
Sub Test()
OptionalArg 1
OptionalArg 1, 2
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9914 次 |
| 最近记录: |