Excel塾のマクロ講座超入門15回 VBAのFor Each Next使い方

マクロ動画解説
 

動画解説

VBAのFor Each Next使い方

動画版「Excel塾のマクロ講座超入門15回」です。
VBAのFor Each Next使い方は、団体さんの一人一人にお弁当を渡すと考える、Excel塾のマクロ講座超入門15回 For Each Next ステートメント がイマイチよくわからないという声をよく聞きます。
それは「団体さんの一人一人にお弁当を渡す」イメージで解決します。一人一人にあたるのがオブジェクト変数です。
つまづきポイントのオブジェクトについても解説しています

コレクション内のすべてのオブジェクトに対して同じ処理をする

https://youtu.be/YVWvCd8nQXw

For Each...Next ステートメントの構造を考える

特定のオブジェクトなどの関連する要素の集まりのことをコレクションといいます。
コレクションや配列に対して、一括して同じ処理を行う場合には、ForEach...Nextステートメントを利用します。

ForEach...Nextステートメントの使い方1

”猫さんず”という集合体があって、その中の一匹ごとの猫さん(オブジェクト)に対して、食事を与える、などというイメージならわかりやすいかと思います。

ForEach...Nextステートメントの使い方2

オブジェクトを格納する変数としての”猫さん”と複数の猫さんの集合体”猫さんず”

これらはすべてオブジェクトです。操作の対象物です。

ForEach...Nextステートメントの使い方3

For Each...Next ステートメントを使ったサンプル

以下のサンプルではセルという オブジェクトが変数です。
Dim セル As Range オブジェクトの種類は レンジです。
セルの集合体 セレクションの中の1つのオブジェクトということになります。

ForEach...Nextステートメントの使い方4
Sub foreachsample1()
  Dim セル As Range
  For Each セル In Selection
         セル.Interior.ColorIndex = セル.Row
  Next
End Sub

このマクロを実行すると、セルの背景色が、セルの行番号と同じColorIndexに変更されます。
ColorIndexで色の番号を知るには良いですが、表の背景としては美しくないですね。
書式のみ消去してしまいましょう。

Sub 書式のみ消去()
    Selection.ClearFormats
End Sub
ForEach...Nextステートメントの使い方5

ForEach...NextステートメントにIF文をネストする

今度は 選択範囲に対して”変数セル”の行番号を2で割って、 それが 割り切れたら、 .Interior.ColorIndexを34番にするという コードに変更してみます。

ForEach...Nextステートメントの使い方6
Sub foreachsample2()
    Dim セル As Range
    Selection.Interior.ColorIndex = 0
    For Each セル In Selection
        If セル.Row Mod 2 = 0 Then
            セル.Interior.ColorIndex = 34
        End If
    Next セル
End Sub

続いて対象のオブジェクトをシートにして、コレクションをシートの集合であるWortksheetsにしてみましょう。
シートを 順番に チェックしていって シートの名前を A 1セルに記入されている文字列に変更します。

ForEach...Nextステートメントの使い方7

ForEach...Nextステートメントを使うと、シート名の変更なども簡単にできます。
サンプルでは、シート名にしたい文字列が各シートのA1に入力してありました。

ForEach...Nextステートメントの使い方8
Sub foreachsample3_シート名にする()
    Dim mysheet As Worksheet
    For Each mysheet In Worksheets
        mysheet.Name = mysheet.Range("A1").Value
    Next
End Sub