If ステートメントは、最も便利な制御構造の 1 つです。If ステートメントを使用すると、条件が真の場合にいくつかのステートメントを評価し、条件が偽の場合にまた別のステートメントを評価できます。
注 条件式を使用する場合は、必ず Else キーワードを含めてください。含まれていないと、If 条件に合致しない値が元の書式に残る場合があります。これを回避するには、DefaultAttribute 関数を使用します (If...Else formula = DefaultAttribute)。
例
ある会社で、営業部の社員には 6 パーセントのボーナスを支給し、それ以外の社員には 4 パーセントのボーナスを支給するとします。次の式では、If ステートメントを使ってこれを実現しています。
Rem 複数行 If の例 1 If {Employee.役職} (1 to 2) = "営業" Then formula = {Employee.給与} * 0.06 Else formula = {Employee.給与} * 0.04 End If
この例で、条件{Employee.役職}=“営業”が真と評価された場合は、
formula = {Employee.給与} * 0.06
ステートメントが処理されます。そうでなかった場合は、Else に続くステートメント、つまり
formula = {Employee.給与} * 0.04
が処理されます。
別の会社では、社員に 4 パーセントのボーナスを支給し、ボーナスの最低額を 1,000 ドルにするとします。次の例でその方法を示しますが、Else 句がないことに注目してください。この句は省略できます。この場合は必要ありません。
Rem 複数行 If の例 2 formula = {Employee.給与} * 0.04 If formula < 1000 Then formula = 1000 End If
次に、この会社でボーナスの最高額を 5,000 ドルにするとします。今度は、ElseIf 句を使用する必要があります。ElseIf が 1 語になっていることに注意してください。次の例では、ElseIf 句が 1 つしかありませんが、必要なだけ追加することもできます。
注 1 つの If ステートメントに使用できる Else 句は 1 つだけです。
Else 句は、If および ElseIf のどの条件も真でない場合に実行されます。
Rem 複数行 If の例 3 formula = {Employee.給与} * 0.04 If formula < 1000 Then formula = 1000 ElseIf formula > 5000 Then formula = 5000 End If
例
ある会社で、社員が支払う予定の納税額を概算し、適切なメッセージを出力するとします。所得が 8,000 ドル未満の場合は非課税、8,000 ドル以上 20,000 ドル未満の場合は 20%、20,000 ドル以上 35,000 ドル未満の場合は 29%、35,000 ドル以上の場合は 40% が課税されます。
Rem 複数行 If の例 4 Dim tax As Currency, income As Currency income = {Employee.給与} Dim message As String If income < 8000 Then tax = 0 message = "なし" ElseIf income >= 20000 And income < 35000 Then message = "最低" tax = (income - 8000)*0.20 ElseIf income >= 20000 And income < 35000 Then message = "中間" tax = (20000 - 8000)*0.20 + (income - 20000)*0.29 Else message = "最高" tax = (20000 - 8000)*0.20 + (35000 - 20000)*0.29 + _ (income - 35000)*0.40 End If Dim taxStr As String Rem 小数点以下は 2 桁にする Rem 桁区切りにカンマを使用する taxStr = CStr (tax, 2, ",") formula = "あなたに適用される課税率は「" & message & _ "」です。 " & _ "課税額は約 " & taxStr & " ドルです。"
計算の手順を単純化するために変数を使用しています。また、条件の 1 つが満たされた場合には、2 つのステートメントが実行されます。1 つは tax 変数への代入、もう 1 つは message 変数への代入です。条件の評価の結果として複数のステートメントを実行する方法はよく使用されます。