Excel VBA で プログラムの基礎を学ぶ!?
■処理 – 分岐
分岐というと条件が必要になりますが、関数で使われる処理では最も頻度がたかいでしょうか?そんな感じがします
広告
VBAで使用する分岐をいくつか紹介します
・If…Then…Elseステートメント
基本的な条件分岐の「もし○○だったら××をする」です!
使い方はこんな感じで、①も②も③も書き方は異なりますが、全て同じ分岐で、同じ処理結果が得られます
Sub FuncIfElseThen(aaa As Integer) ' ① If aaa = 1 Then Debug.Print "aaaは1です" ElseIf aaa = 2 Then Debug.Print "aaaは2です" Else Debug.Print "aaaはそれ以外です" End If ' ② If aaa = 1 Then Debug.Print "aaaは1です" Else If aaa = 2 Then Debug.Print "aaaは2です" Else Debug.Print "aaaはそれ以外です" End If End If ' ③ If aaa = 1 Then Debug.Print "aaaは1です" Else If aaa = 2 Then Debug.Print "aaaは2です" Else Debug.Print "aaaはそれ以外です" End Sub
③が長かったですが、これぞ「If…Then…Else」ステートメントの繰り返し!
※余談ですが、Ifの分岐を関数化した「IIf関数」というのもありますw
構文は、以下の通りですが、分岐ではなくあくまでも関数ですので、解説はしません
IIf(expr, truepart, falsepart)
上のサンプルソースと同じ結果を得るには以下のように記載します
Sub FuncIIf(aaa As Integer) Debug.Print IIf(aaa = 1, "aaaは1です", IIf(aaa = 2, "aaaは2です", "aaaはそれ以外です")) End Sub
広告
・Select Case ステートメント
もう一つの分岐としては、「Select Case」ステートメントです!
使い方はこんな感じで、文字列を評価することも、評価に範囲や条件、変数を入れることもできます
Sub FuncSelectCaseString(aaa As String) Dim bbb As String bbb = "GGG" Select Case aaa Case "AAA": Debug.Print "aaaは'AAA'です" Case "BBB", "CCC" Debug.Print "aaaは'BBB'もしくは'CCC'です" Case "DDD" To "FFF" Debug.Print "aaaは'DDD'から'FFF'の間です" Case bbb Debug.Print "aaaはbbbと同じです" Case Else Debug.Print "aaaはそれ以外です" End Select End Sub Sub FuncSelectCaseInteger(aaa As Integer) Select Case aaa Case 1: Debug.Print "aaaは1です" Case 2, 3 Debug.Print "aaaは2か3です" Case 4 To 6 Debug.Print "aaaは4~6です" Case Is >= 7, Is < 10 Debug.Print "aaaは7~9です" Case Else Debug.Print "aaaはそれ以外です" End Select End Sub
IfThenElseステートメントは、ElseIf毎に別々の条件をかける(評価対象を変えれる)ので、分岐回数分の評価が行われるのですが、SelectCaseステートメントは、最初に1度評価するだけで、どのCaseに一致するかで処理されます
広告