今日は、VBAの条件分岐について確認してみたいと思います。
条件分岐には、2つの書き方があります。ひとつは、If構文を使う方法、そしてもう一つは、
Select Case構文を使う方法です。
一般的には、条件分岐が少ない時は前者、多い時は後者を使うと分かりやすいです。
例えば、以下のケースを考えてみましょう。
収入金額が、
8,000円以下の場合は、基礎控除は0円。
8,340円未満の場合は、基礎控除は8,340円。
12,000円未満の場合は、基礎控除は9,030円。
12,000円以上は、基礎控除はxxx円。
※基礎控除額は、全て仮定です。実際の額ではありません。
このような場合、条件分岐の数が多いので、まずは、Select Case構文を使ってコードを記述してみましょう。
Select Case構文の場合、最初の条件から順次チェックしていきます。
従って、収入金額が8,200円の場合は、最初の条件つまり、8,000円以下を満たしていないため、次の条件に移ります。
2番目の条件8,340円未満を満たしているので、「基礎控除は8340円です」というメッセージボックスが表示されます。
下の図は、上記のサブルーチンを実行したところです。
8200と入力して、OKボタンを押すと、以下のメッセージが表示されます。
正しく動作していますね。
さて、同じ内容をIf構文を使って書いてみましょう。
条件指定が、少し複雑だと感じませんか?
どちらも正しく動作します。好みもあるかもしれませんが、できるだけ、分かりやすいコーディングを
心がけることも大切ですね。
だい
条件分岐には、2つの書き方があります。ひとつは、If構文を使う方法、そしてもう一つは、
Select Case構文を使う方法です。
一般的には、条件分岐が少ない時は前者、多い時は後者を使うと分かりやすいです。
例えば、以下のケースを考えてみましょう。
収入金額が、
8,000円以下の場合は、基礎控除は0円。
8,340円未満の場合は、基礎控除は8,340円。
12,000円未満の場合は、基礎控除は9,030円。
12,000円以上は、基礎控除はxxx円。
※基礎控除額は、全て仮定です。実際の額ではありません。
このような場合、条件分岐の数が多いので、まずは、Select Case構文を使ってコードを記述してみましょう。
Sub test2() Dim intValue As Integer intValue = InputBox("収入金額を入れてください") Select Case intValue Case Is <= 8000 MsgBox "基礎控除は0円です" Case Is <8340<br> MsgBox "基礎控除は8340円です" Case Is <12000<br> MsgBox "基礎控除は9030円です" Case Else MsgBox "基礎控除はXXX円です " End Select End Sub
Select Case構文の場合、最初の条件から順次チェックしていきます。
従って、収入金額が8,200円の場合は、最初の条件つまり、8,000円以下を満たしていないため、次の条件に移ります。
2番目の条件8,340円未満を満たしているので、「基礎控除は8340円です」というメッセージボックスが表示されます。
下の図は、上記のサブルーチンを実行したところです。
8200と入力して、OKボタンを押すと、以下のメッセージが表示されます。
正しく動作していますね。
さて、同じ内容をIf構文を使って書いてみましょう。
Sub test()
Dim intValue As Integer
intValue = InputBox("収入金額を入れてください")
If intValue <= 8000 Then
MsgBox "基礎控除は0円です"
ElseIf intValue > 8000 And intValue <8340 Then<br>
MsgBox "基礎控除は8340円です"
ElseIf intValue >= 8340 And intValue <12000 Then<br>
MsgBox "基礎控除は9030円です"
ElseIf intValue >= 12000 Then
MsgBox "基礎控除はXXX円です "
End If
End Sub
条件指定が、少し複雑だと感じませんか?
どちらも正しく動作します。好みもあるかもしれませんが、できるだけ、分かりやすいコーディングを
心がけることも大切ですね。
だい