エクセルVBAで、For nextを使ってブック内の全てのシートに対して処理を行うプログラムを紹介します。
ここでは全てのシートの名前を取得して、エクセルに出力していきます。
目次
For Nextでブック内の全シートを処理
A列に各シートの名前を出力していきます。
まずは全体のプログラムを紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'プログラム0|変数宣言の指定 Option Explicit 'プログラム1|プログラム開始 Sub Sample13() 'プログラム2|変数設定 Dim i As Long 'プログラム3|1番目のシートから最後のシートまで処理 For i = 1 To Worksheets.Count 'プログラム4|シート名を出力 Range("A" & i).Value = Worksheets(i).Name Next 'プログラム5|プログラム終了 End Sub |
以下で詳しく説明します。
プログラム0|変数宣言の指定
1 |
Option Explicit |
「Option Explicit」とは、変数宣言を強制するためのものです。
予期しないエラーを防止できるため「Option Explicit」を入力することを習慣化することを推奨しています。
詳しい説明は以下のページで紹介しています。
プログラム1|プログラム開始
1 |
Sub Sample13() |
VBAではプロシージャという単位でプログラムを呼び出します。
プロシージャの構文は下記となっています。
1 2 3 |
Sub プロシージャ名() '実行プログラム End Sub |
「Sub」で始まり「End Sub」で終わります。
プロシージャに関連するmoduleの話については以下で説明しています。
プログラム2|変数設定
1 |
Dim i As Long |
本プログラムで使用する変数を設定します。
Long(整数)型の変数を2つを使います。
iはFornextの数値カウンターとして使用します。
変数については、以下のページで紹介しています。
プログラム3|1番目のシートから最後のシートまで処理
1 2 3 4 5 |
For i = 1 To Worksheets.Count 'プログラム4|シート名を出力 'Range("A" & i).Value = Worksheets(i).Name Next |
上記のForとNextの間を、i=1,2,3,・・・,Worksheets.Countまでと1つずつカウントアップしながら、繰り返し処理を行います。
この事例では、シート数は5です。そのため、Worksheets.Countは以下のとおり、5となります。
Debug.Printでの検証結果
1 2 3 |
Debug.Print Worksheets.Count >>>5 |
Worksheets.Count=5のため、i=1,2,3,4,5とカウントアップして繰り返し処理を実行していきます。
プログラム4|シート名を出力
1 |
Range("A" & i).Value = Worksheets(i).Name |
iは1,2,3,4,5という数値なので、「Range(“A” & i).Value」は、iの値に応じてセルA1,A2,A3,A4,A5となります。
これは、「ブック内のWorkshSheetsコレクションのi番目の名前を取得する」という意味です。
要は対象のエクセルブックのシートのi番目の名前を取得することができます。
実際に、この事例におけるシート名をDebug.Printで検証してみます。
Debug.Printでの検証結果
1 2 3 4 5 6 7 8 9 |
For i = 1 To Worksheets.Count Debug.Print Worksheets(i).Name Next >>>Sheet1 >>>Sheet2 >>>Sheet3 >>>Sheet4 >>>Sheet5 |
上記のようにシート名を取得することができます。
これらをエクセルのA列に出力していきます。
プログラム5|プログラム終了
1 |
End Sub |
プログラム1と対になるプログラムで、プログラム終了させるための記述です。
「End Sub」を読み込むと、プログラムが終了します。
プログラムの解説はここまでです。
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
少しずつレベルアップしながら、難しい内容に挑戦していくと効率的に学ぶことができます。
上記のリンクでは、VBA勉強に役立つ内容を紹介しています。
興味がある人はご覧ください。