Home » いちばんやさしいExcel VBAの教本 » For Each~Next文のほうがFor~Next文よりシンプルに書ける場合の具体例

For Each~Next文のほうがFor~Next文よりシンプルに書ける場合の具体例

対象:Excel 2010, Excel 2013, Windows版Excel 2016

拙著『いちばんやさしいExcel VBAの教本』のChapter 7までは、学習する項目を減らして易しくなることを目指しています。

本書で扱っていない項目を省略した理由と学習するタイミング

拙著で扱っていない項目をどう学習していくかについて、Lesson 78「本書で扱っていない項目を省略した理由と学習するタイミング」で簡単にまとめていますが、具体的なコードをご紹介しておきます。

For Each~Next文でシートを選択してシート名を順番に表示する

Lesson 68「ワークシートに対しループ処理を行うマクロを作りましょう」では、For~Next文を使って、シートを選択してシート名をメッセージボックスに表示するSubプロシージャを作成しています。

これはFor Each~Next文を使っても書ける、代表的な処理です。

Sub シートを選択してシート名を順番に表示する()
 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文を使っても書ける、代表的な処理です。

Sub ブックをアクティブにしてブック名を順番に表示する()
 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

[スポンサードリンク]

Home » いちばんやさしいExcel VBAの教本 » For Each~Next文のほうがFor~Next文よりシンプルに書ける場合の具体例

「いちばんやさしいExcel VBAの教本」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.