【用語集に記載の内容について】
用語集に記載されているメソッドや関数の引数は、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を代入
|
| カテゴリ | スタンダード |