Excel VBA スタンダード・ステートメントについて

Excel VBAでのステートメントは、プログラムの命令のことで、実行して特定の動作を行います。データの操作、条件分岐、ループ、オブジェクトの操作など、さまざまな処理を実行するために使用します。

Excel VBA Exitステートメント

Exitステートメント

ループ内で特定の条件を満たした時点でループを終了するために使用します。また、プロシージャ内で条件に合致した場合にプロシージャの実行を終了させます。

Sub ExitStatementExample()
    Dim i As Integer
    
    For i = 1 To 10
        If i = 5 Then
            MsgBox "ループを終了します。"
            Exit For ' iが5の時点でループから抜け出す
        End If
    Next i
End Sub

For`ループを使用して i が1から10までの範囲でループします。Ifステートメントを使い i が5になった時点でメッセージを表示し、Exit Forステートメントを使いループから抜け出しています。

Exitステートメントは、VBAでループ構造(For, Do, Whileなど)やプロシージャ(SubやFunction)から直ちに抜け出すために使用します。

Exit For
Forループ内で使用され、特定の条件が満たされた場合にループを終了します。

Exit Do
Doループ内で使用され、特定の条件が満たされた場合にループを終了します。

Exit While
Whileループ内で使用され、特定の条件が満たされた場合にループを終了します。

Exit Sub
プロシージャ(サブルーチン)内で使用され、実行中のプロシージャから抜け出します。

Exit Function
関数内で使用され、関数の実行から抜け出します。

これらのステートメントは、条件が満たされた場合に、その時点で処理を終了させるために使われます。

例えば、ループ内で特定の条件に達した場合にループから抜け出すなど、プログラムの制御を特定の条件に基づいて行う際に役立ちます。

 

Excel VBA Select Caseステートメント

Select Caseステートメント

Select Caseは、特定の式や変数の値を評価し、それが特定の条件に一致するかどうかを判断します。

Caseステートメントを使用して、条件に応じた処理を記述します。`Case`の後には条件値や式が来ます。

Case Elseは、すべての条件に一致しない場合のデフォルトの処理を定義します。

Select Caseステートメントは複数の条件を効率的に比較できるため、If...ElseIf...Elseよりもコードがスッキリと見えます。

※Case`ステートメント内の条件式は、一致するデータ型でなければなりません。

Sub SelectCaseExample()
    Dim day As Integer
    day = 3 ' 日付を示す仮の値(例えば平日や休日など)
    
    Select Case day
        Case 1
            MsgBox "月曜日です。"
        Case 2
            MsgBox "火曜日です。"
        Case 3
            MsgBox "水曜日です。"
        Case 4
            MsgBox "木曜日です。"
        Case 5
            MsgBox "金曜日です。"
        Case 6, 7
            MsgBox "週末です。"
        Case Else
            MsgBox "不正な日付です。"
    End Select
End Sub

day変数に代入された値に応じて、Select Caseステートメントが評価されます。Caseステートメント内で日付に応じたメッセージボックスを表示するように設定されています。最後のCase Elseは、どの条件にも一致しない場合のデフォルト処理を定義します。

Select Case ステートメントで使う Is

Is は、値に指定した評価対象を比較するときに使います。

 

Sub SelectCaseWithIsExample()
    Select Case Range("A1").Value
        Case Is < 10
            MsgBox "A1は10未満です。"
        Case Else
            MsgBox "A1は10以上です。"
    End Select
End Sub

Select Case`ステートメントで Range("A1").Valueを評価して、その結果に応じてメッセージボックスを表示しています。

 

Select Case ステートメントのCase 1または10または30の条件記述

Select Caseステートメントで、Case で複数の条件を組み合わせることができます。Case で複数の条件をOR(または)で結合する場合は、カンマで区切って条件を記述します。

 

Sub SelectCaseMultipleConditionsExample()
    Select Case Range("A1").Value
        Case 1, 10, 30
            MsgBox "1、10、または30のいずれかに一致しました。"
        Case Else
            MsgBox "条件に一致する数値はありませんでした。"
    End Select
End Sub

 

Select Case ステートメントのCase 1から10までの条件記述

Select Caseステートメントで特定の範囲の条件を指定する場合、To を使って範囲を指定します。

Case内で範囲を表すために始めの値と終わりの値をTo 区切ります。

 

Sub SelectCaseRangeExample()
    Select Case Range("A1").Value
        Case 1 To 10
            MsgBox "1から10の範囲に含まれています。"
        Case Else
            MsgBox "範囲外の数値です。"
    End Select
End Sub

 

Excel VBA Do Loopステートメント

Do Loopステートメント

Do Loopステートメントは条件を満たす間、あるいは条件が満たされなくなるまでコードを繰り返し実行します。

Do While や Do Untilなどの条件を使って、ループの開始前に条件を評価するか、ループの終了後に条件を評価します。(Do Whileは条件が真の間、Do Untilは条件が偽の間ループを続けます)

Do Loopステートメントの条件が満たされるまで、または満たされなくなるまで、ループ内のコードが実行されます。

無限ループにならないように条件の正確な設定が必要です。

 

Sub DoLoopExample()
    ' Do Whileで繰り返し前に条件を評価
    Dim i As Integer
    i = 1
    Do While i <= 5
        Debug.Print i
        i = i + 1
    Loop
    
    ' Do Untilで繰り返し後に条件を評価
    Dim j As Integer
    j = 10
    Do Until j <= 5
        Debug.Print j
        j = j - 1
    Loop
End Sub

Do While と Do Untilを使って繰り返しを行っています。Do Whileは i が5以下の間、Do Untilは jが5以下になるまでループを続けます。

Do 
何らかの処理
Loop

このコードは無限ループになります。

Do Loopステートメントに条件がないため、ループが始まると条件の評価なしに永遠に続くのです。

 

Excel VBA For Each Nextステートメント

For Each Nextステートメント

For Each ループは、コレクション内の各要素を繰り返し処理する際に使用されます。Excel VBAでは、ワークシートのセル範囲や配列などをコレクションとして扱うことができます。

ループごとにコレクション内の各要素を取り出し、処理を行うことができます。

For Each は、ループごとに要素を一つずつ取り出すため、コレクションの要素数や配列の要素数を気にする必要がありません。

 

Sub ForEachExample()
    ' ワークシートのセル範囲をコレクションとして取得し、各セルの値を出力する例
    Dim cell As Range
    For Each cell In ThisWorkbook.Sheets("Sheet1").Range("A1:A5")
        Debug.Print cell.Value
    Next cell
    
    ' 配列をコレクションとして取得し、各要素の値を出力する例
    Dim arr As Variant
    arr = Array("apple", "orange", "banana", "grapes")
    Dim element
    For Each element In arr
        Debug.Print element
    Next element
End Sub

For Each を使用して、ワークシートのセル範囲や配列の要素を一つずつ取り出し、それぞれの値を出力しています。

ループごとにコレクション内の要素が変数に代入され、その要素を処理することができます。

 

Excel VBA Ifステートメントの複数条件分岐

Ifステートメントの複数条件分岐

複数の条件を同時に評価して、条件ごとに異なる処理を実行するために使用されます。

If ステートメントの後に複数の Else を追加し、条件を追加していきます。

条件は上から順に評価され、最初に真と評価された条件の処理ブロックが実行されます。それ以外の条件は評価されません。

 

Sub MultipleIfConditionsExample()
    Dim num As Integer
    num = 15
    
    If num < 10 Then
        Debug.Print "10未満"
    ElseIf num >= 10 And num < 20 Then
        Debug.Print "10以上かつ20未満"
    ElseIf num >= 20 And num < 30 Then
        Debug.Print "20以上かつ30未満"
    Else
        Debug.Print "30以上"
    End If
End Sub

If ステートメントの複数条件分岐を示しています。num の値によって、異なる条件が評価され、該当する条件のブロックが実行されます。条件が一つも該当しない場合は Else が実行されます。

Excel VBAのスキルを活かして、開発者としてのキャリアを築いてみませんか?

当サイトでは、Excel VBAエキスパート認定資格取得に向けた情報を提供しています。興味がある方は、ぜひ以下の問題集からチャレンジしてみてください。

 

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。