拙著『いちばんやさしいExcel VBAの教本』のChapter 7までは、学習する項目を減らして易しくなることを目指しています。
拙著で扱っていない項目をどう学習していくかについて、Lesson 78「本書で扱っていない項目を省略した理由と学習するタイミング」で簡単にまとめていますが、具体的なコードをご紹介しておきます。
For Each~Next文でシートを選択してシート名を順番に表示する
Lesson 68「ワークシートに対しループ処理を行うマクロを作りましょう」では、For~Next文を使って、シートを選択してシート名をメッセージボックスに表示するSubプロシージャを作成しています。
これはFor Each~Next文を使っても書ける、代表的な処理です。
Dim sh As Worksheet For Each sh In Worksheets
sh.Select
MsgBox sh.Name
Next sh
End Sub
上記のSubプロシージャを実行すると、p.255で作成しているSubプロシージャと同じ結果になります。
For Each~Next文でブックをアクティブにしてブック名を順番に表示する
Lesson 77「すべてのブックからシートを複製するマクロを理解しましょう」では、For~Next文を使った、ブックをアクティブにしてブック名をメッセージボックスに表示するSubプロシージャをご紹介しています。
これもFor Each~Next文を使っても書ける、代表的な処理です。
Dim bk As Workbook For Each bk in Workbooks
bk.Activate
MsgBox bk.Name
Next bk
End Sub
上記のSubプロシージャを実行すると、p.293でご紹介しているSubプロシージャと同じ結果になります。
For~Next文はFor Each~Next文でも書けることがある
拙著だけで、はじめてプログラミング学習をしただけの方の場合、上記2つのSubプロシージャの意味を完全にはわからないものの、p.255・293に掲載されているSubプロシージャよりスッキリしたコードであることは、感じられるのではないかと思います。
これが拙著のp.297で、コレクションオブジェクトに含まれる全オブジェクトに対して同じような処理するときに、For Each~Next文のほうがFor~Next文よりシンプルに書けるケースがあります。
と書いている具体例です。
最終更新日時:2018-09-16 13:41
- Newer:VBAで文字数を制限する入力規則を設定
- Older:Rectangleに数式を
Home » いちばんやさしいExcel VBAの教本 » For Each~Next文のほうがFor~Next文よりシンプルに書ける場合の具体例