VBAでの繰り返しの応用(シートの操作)

スポンサーリンク

今回紹介するVBA(マクロ)の内容

前回までは1つのシートの中での繰り返し操作を紹介しましたが、複数のシートに対して繰り返し行う操作を作る可能です。今回は複数のシートに対して行う操作を記載します。

全部のシートに対して行う作業

全部のシートに対して行う作業はFor Each~Next構文かFor~Next構文のどちらかを用います。

①For Each~ Next構文

Sub 各シートへのデータの反映()
Dim シート As Worksheet
’ワークシートを当てはめる(格納する・入れる)変数として「シート」を使う
For Each シート In Worksheets
’変数「シート」にこのファイルのシートを順に当てはめる(格納する
シート.Select’「シート」を選択する
Cells(1, 1) = 1’A1に「1」を入力する
Next シート’次のシートに移る
End Sub

これで各シートのA1のセルに「1」が入力されます。

スポンサーリンク

②For Next構文

For~Next構文を用いた場合のポイントは最後のシートをどうやって認識させるかです。
開いているExcelファイルのシート数は「Worksheet.Count」で表すことができます。

Sub 各シートへのデータの反映()
Dim i As Integer’変数としてiを使う
For i = 1 to Worksheet.Count’シート1から最後のシートまで
Sheets(i).Select’i番目のシートを選択する
Cells(1,1) =1’A1セルに「1」を入力する
Next i’次のシートに移る
End Sub

どちらが便利か

どちらか一つを覚えるなら②For~Next構文を覚えたほうが応用がききます。

私は「シート2から最後までの情報を全てシート1に記載する」コードを使うことが多いので、For Each~Next構文をあまり使いません。(「For i = 2 to Worksheet.Count」で内容をコピーするコードを書きます。)

For Each~Next構文は全てのシートに対して処理を行うものなので、シート1以外全部とか、シート1-3までとか一部のシートに対して作業を行うのが難しいです。

ただ、For Each~Next構文を用いるとコードがすっきりする(らしい)のでどちらも使える方が便利だとは思います。
興味があれば試してみてください。

コメント