Excel VBA

[ExcelVBA] すべてのシートに同じ処理を繰り返したい。[For Each...Nextの使い方]

2020年4月9日

 

本記事はエクセル2019で動作確認を行っています。

 

困ってます
VBAを使用して、シートやブックに同じ処理を繰り返し行いたいのですがいい方法はありますか?

 

このような疑問にお答えします。

 

Do…LoopステートメントやFor_Nextステートメントを使用しても繰り返し処理を行うことはできますが、シートやブックに対して同じ処理を繰り返す場合は、For Each…Nextステートメントを使用すると便利です。

 

本記事は、

すべてのブックに同じ処理を繰り返す。

すべてのシートに同じ処理を繰り返す。

指定したセルに同じ処理を繰り返す。

の3つの方法を解説します。

 

 

すべてのブックに同じ処理を繰り返す。

 

Dim 変数 As workbook

For Each 変数 In Workbooks

  処理内容

Next

 

(例)

開いているブックをすべて閉じたいときを例にします。

Sub ブックを閉じる()

 Dim wb As Workbook '①

 For Each wb In Workbooks '②

   Application.DisplayAlerts = False  '③

   wb.Close '④

   Application.DisplayAlerts = True '⑤

 Next

End Sub

 

解説

①Workbookのオブジェクトに変数を宣言する。

②変数にWorkbooksコレクションを代入する。

③警告のメッセージ表示をオフにする。

④すべてのWorkbookを閉じる。

⑤警告のメッセージ表示をオンに戻す。

 

 

 

すべてのシートに同じ処理を繰り返す。

 

(式)

Dim 変数 As worksheet

For Each 変数 In Worksheets

  処理内容

Next

 

(例)

すべてのシートのA1セルの値を削除することを例にします。

Sub 値の削除()

 Dim ws As Worksheet '①

 For Each ws In Worksheets '②

   ws.Range("A1").ClearContents '③
 
 Next '④

End Sub

解説

①Worksheetオブジェクトに変数を宣言する。

②変数にWorksheetsコレクションを代入する。

③A1セルの値を削除する。

④すべてのシートに対して繰り返し処理を行う。

 

 

 

指定したセルに同じ処理を繰り返す。

 

(式)

Dim 変数 As Range

For Each 変数 In セル範囲

  処理内容

Next

 

本記事ではセル範囲についての例題は割愛しますが、上記のブックやシートと同じ手順をふんでいただくと処理を行うことができます。

 

今回はすべてのブックやブック内のすべてのシートに同じ処理を繰り返す方法をご紹介しました。

もし、繰り返しの途中で処理を抜け出したいときには「Exit Forステートメント」を使用します。

抜け出したい場所にExit Forを記述してもらえれば、処理途中でも抜け出すことができます。

 

今回も最後まで目を通していただきありがとうございます。

 

-Excel VBA
-

Copyright© Ronpeee blog , 2023 All Rights Reserved.