「For ~ Next」と似ていますがこちらには「Each」が含まれていますね。
おなじように繰返処理で使われますが、こちらはワークシートやワークブック「全体」に対してつかわれます。
こちらではVBAでの具体的な「For Each ~ Next」の使い方をご紹介いたします。
繰返処理とは条件に達するまで処理をずっと続けさせることです。
「For ~ Next」と「For Each ~ Next」のちがい
基本的な考え方は「For ~ Next」とおなじですが、繰返の対象となるモノがちがいます。
コードのポイントをつかって見ておきましょう。
「For Each ~ Next」
For Each 「変数」 In 「コレクション」
(ここに「変数」をつかって繰返処理した内容を記述)
Next
こちらは「コレクション」に対して繰返処理を実行します。
「For ~ Next」
For 「変数」 = (開始したい数字) To (終了したい数字)
(ここに「変数」をつかって繰返処理した内容を記述)
Next
いっぽうこちらは「指定した数字」に対して繰返処理を実行します。
コレクションとは
「コレクション」とは日本語で「収集品」の意味があります。
プログラミングでの意味もこれに近くて、「コレクション」とは同じ種類のオブジェクトをひとつにまとめたものの意味です。
とは言ったもののイメージしにくいので、よくつかわれる具体例をみておきましょう。
コレクション | 内容 |
Workbooks | 複数の「Workbook」をまとめたもの |
Worksheets | 複数の「Worksheet」をまとめたもの |
「コレクション」には複数形の”S”がついていますね。
For Each ~ Nextの使い方
さっそく具体的なコードを使ってご説明します。
こちらが記述したい内容です。
【スタート】マクロの名前:for_each_next (変数の作成)「変数:sheet」をバリアント型として定義する (繰返処理の開始)「変数:sheet」に「コレクション」を順番に代入して繰返実行する メッセージを表示”いま取得しているシート名:「変数:sheet」” (繰返処理の終了)繰返処理の開始へ戻る 【ゴール】
コードはこちらです。
Sub for_each_next() Dim sheet As Variant For Each sheet In Worksheets MsgBox ("いま取得しているシート名:" & sheet.Name) Next End Sub
「変数」の型に迷ったら、とりあえず「Variant」をつかってください。
こちらが実行時のワークシートです。
こちらが実行結果です。左から順番に表示されています。
まとめ
「For Each ~ Next」についてご理解を頂けましたでしょうか。
こちらの繰返処理もマクロ作成ではとてもよく使われます。
例えばこれをつかって「各ワークシートから情報を集める処理」を自動化することができます。ワークシートが多いほどに威力を発揮しますので、まずはこういった方法があることを覚えておいてください。