【Excel VBA入門】マクロの繰り返し処理|For Each ~ Next

記述編

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」についてご理解を頂けましたでしょうか。

こちらの繰返処理もマクロ作成ではとてもよく使われます。

例えばこれをつかって「各ワークシートから情報を集める処理」を自動化することができます。ワークシートが多いほどに威力を発揮しますので、まずはこういった方法があることを覚えておいてください。

タイトルとURLをコピーしました