【用語集に記載の内容について】
用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。
また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。
【コードをコピーして実行する場合の注意】
文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。
For Each…Nextステートメント
名称 | For Each…Nextステートメント |
---|---|
説明 | 配列の要素やコレクションのメンバーを1つずつ順番に取り出して、繰り返し処理を行う命令です。 グループのメンバーをすべて取り出し終えると、繰り返しは終了します。 |
書式 |
For Each 変数名 In グループ名 変数を使った処理 Next 変数名 グループ名:配列名やコレクション名、セル範囲を指定 グループには、配列やコレクション、複数のセルを指定できます。 「Next 変数名」の変数名は省略可能です。 For Each…Nextステートメントをネストした場合は、判別のため、変数名を記述することが推奨されます。 |
コード例① |
【グループにWorksheetsコレクションを指定】 Sub Macro1() Dim ws As Worksheet For Each ws In Worksheets MsgBox ws.Name Next ws End Sub アクティブブックのWorksheetsコレクションの各ワークシートをひとつずつ取り出し、名前をメッセージボックスに表示します。 Worksheetsコレクションとは、ブック内のワークシート(Worksheetオブジェクト)の集合体です。 アクティブブックにワークシート「Sheet1」「Sheet2」が存在する場合、For Each…Nextステートメントは以下のように処理されます。 ws = ワークシート「Sheet1」→ 「Sheet1」のメッセージボックスを表示 ws = ワークシート「Sheet2」→ 「Sheet2」のメッセージボックスを表示 |
コード例② |
【グループに配列を指定】 Sub Macro2() Dim arr(1) As String Dim item As Variant arr(0) = "リンゴ" arr(1) = "バナナ" For Each item In arr MsgBox item Next End Sub 配列arrの各要素をひとつずつ取り出し、各要素の値をメッセージボックスに表示します。 For Each…Nextステートメントは以下のように処理されます。 item = arr(0)→ 「リンゴ」のメッセージボックスを表示 item = arr(1)→ 「バナナ」のメッセージボックスを表示 |
コード例③ |
【グループにセル範囲を指定】 Sub Macro3() Dim cell As Range Dim i As Long For Each cell In Range("A1:A3") i = i + 1 cell.Value = i Next End Sub セル範囲A1:A3の各セルをひとつずつ取り出し、各セルに変数iの値を代入します。 For Each…Nextステートメントは以下のように処理されます。 cell = セルA1→ i = 1→ セルA1に1を代入 cell = セルA2→ i = 2→ セルA2に2を代入 cell = セルA3→ i = 3→ セルA3に3を代入 |
コード例④ |
【グループにSelectionを指定】 Sub Macro4() Dim cell As Range Dim i As Long 'セル範囲A1:A3を選択 Range("A1:A3").Select For Each cell In Selection i = i + 1 cell.Value = i Next End Sub For Each…Nextステートメントのグループに指定されているSelectionは、現在選択されているオブジェクトを表します。 したがって、「Range("A1:A3").Select」で選択したセル範囲A1:A3を表します。 Selectionから各セルをひとつずつ取り出し、各セルに変数iの値を代入します。 For Each…Nextステートメントは以下のように処理されます。 cell = セルA1→ i = 1→ セルA1に1を代入 cell = セルA2→ i = 2→ セルA2に2を代入 cell = セルA3→ i = 3→ セルA3に3を代入 |
カテゴリ | スタンダード |