【VBA】IIfおよびSwitch関数による条件分岐の解説【If文・Switch文 】
はじめに
VBA(Visual Basic for Applications)は、Microsoft Office製品などで利用されるプログラミング言語です。プログラム内で条件に応じた処理を簡潔に書くために、IIf
関数や Switch
関数が用意されています。これらの関数は、複雑な条件分岐をシンプルな一行の式で実現できるため、初心者の方にも理解しやすい機能となっています。
IIf関数とは?
IIf
関数は、「条件式」が真か偽かに基づいて、2つの値のうちどちらかを返す関数です。書式は以下の通りです。
IIf(条件式, 真の場合の値, 偽の場合の値)
この関数は、条件に基づいて値を直接返すため、変数への代入や他の式の一部として利用できます。ただし、注意点として「真の場合の値」と「偽の場合の値」の両方が評価されるため、副作用のある処理が含まれていると予期せぬ動作になることがあります。
IIf関数の使い方と例
以下は、IIf
関数を用いた基本的な例です。2つの数値を比較し、どちらが大きいかを判定するプログラムです。
' 例:a と b の大小を判定する
Dim a As Integer
Dim b As Integer
Dim result As String
a = 10
b = 20
result = IIf(a > b, "aはbより大きい", "aはbより小さいか等しい")
MsgBox result
ポイント: 条件 a > b
が真の場合は “aはbより大きい” が、偽の場合は “aはbより小さいか等しい” が返されます。
別の例: 数値の偶数・奇数を判定する方法です。
' 例:偶数・奇数の判定
Dim number As Integer
Dim parity As String
number = 7
parity = IIf(number Mod 2 = 0, "偶数", "奇数")
MsgBox "数値 " & number & " は " & parity
Switch関数とは?
Switch
関数は、複数の条件を順に評価し、最初に真となる条件に対応する値を返す関数です。書式は以下の通りです。
Switch(条件1, 値1, 条件2, 値2, ...)
この関数を使うと、複数の If...ElseIf
文を使うよりもシンプルに条件分岐を記述できます。ただし、どの条件も満たさない場合は Null
が返されるため、最後に True
を使ってデフォルトの値を指定することが一般的です。
Switch関数の使い方と例
以下は、Switch
関数を用いた例です。テストの点数に基づいて成績を判定するプログラムです。
' 例:点数に応じた成績判定
Dim score As Integer
Dim grade As String
score = 85
grade = Switch( _
score >= 90, "A", _
score >= 80, "B", _
score >= 70, "C", _
score >= 60, "D", _
True, "F" _
)
MsgBox "点数 " & score & " は成績 " & grade & " です。"
この例では、上から順に条件を評価し、最初に該当する条件があればその値(ここでは成績)が返されます。たとえば、score
が 85 の場合、score >= 80
が真になるため “B” が返されます。
別の例: 曜日に対応する処理を行う場合です。
' 例:曜日に応じたメッセージの表示
Dim dayNumber As Integer
Dim message As String
dayNumber = 3 ' 1: 日曜、2: 月曜、3: 火曜、... とする場合
message = Switch( _
dayNumber = 1, "今日は日曜日です。", _
dayNumber = 2, "今日は月曜日です。", _
dayNumber = 3, "今日は火曜日です。", _
dayNumber = 4, "今日は水曜日です。", _
dayNumber = 5, "今日は木曜日です。", _
dayNumber = 6, "今日は金曜日です。", _
dayNumber = 7, "今日は土曜日です。", _
True, "不正な値です。" _
)
MsgBox message
注意点とまとめ
IIf関数の注意点:
- 「真の場合の値」と「偽の場合の値」の両方が常に評価されるため、計算負荷が高い処理やエラーが発生する可能性のある処理は注意して使用する必要があります。
- 複雑な条件分岐では、従来の
If...Else
文の方がわかりやすい場合もあります。
Switch関数の注意点:
- 条件は上から順番に評価され、最初に真になった条件の値が返されます。
- どの条件も満たさない場合、
Switch
関数はNull
を返すため、デフォルトの処理を行いたい場合は最後にTrue
を条件として記述することが望ましいです。
まとめ:
IIf
関数と Switch
関数は、条件分岐を簡潔に表現するための便利なツールです。どちらも適切な場面で利用することで、コードが読みやすく、保守性の高いプログラムを書くことが可能になります。状況に応じて使い分けると良いでしょう。