特定の括弧内の所得税を計算する関数を Visual Basic で定義したいと思います。入力は、所得、限界税率、下位ブラケット境界、およびオプションで上位ブラケット境界である必要があります。(上部ブラケットの場合、上限はありません)。
これが私がそれについて行った方法です。まず、「ランプ」関数を次のように定義します。
Public Function ramp(x)
ramp = (x + Abs(x)) / 2
End Function
これは基本的に IF(x<0,0,x) と同じです。次に、税金の関数 (オランダ語) を次のように定義します。
Public Function schijfbelasting(inkomen, ondergrens, bovengrens, tarief)
schijfbelasting = ramp(tarief * (inkomen - ondergrens)) - ramp(tarief * (inkomen - bovengrens))
End Function
ここで、"inkomen" = 収入、"ondergrens" = 下限ブラケット境界、"bovengrens" = 上限ブラケット境界、"tarief" = 限界税率、および出力 "schijfbelasting" = 指定されたブラケット内の税。
これはすべて正常に機能しますが、次を使用して「bovengrens」(上部ブラケット境界) をオプションにしたい場合を除きます。
Optional bovengrens
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
しかし、Visual Basic の「nargin」に似た関数は知りません。「引数「bovengrens」が定義されている場合」のようなものでもかまいません。この問題にアプローチする方法を知っている人はいますか? 前もって感謝します。
PS私は、一番上のブラケットのブラケット「境界」に非常に大きな数を入力することでコードを「機能させる」ことができることを認識していますが、このエレガントなコーディングは考慮していません。