Excel VBA で プログラムの基礎を学ぶ!?

ページ番号: 1 2 3 4 5 6

■処理 – 分岐

分岐というと条件が必要になりますが、関数で使われる処理では最も頻度がたかいでしょうか?そんな感じがします

広告

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に一致するかで処理されます

ページ番号: 1 2 3 4 5 6
広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い

シェアする