Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を取得して一覧を作成するExcelマクロ

シート名を取得して一覧を作成するExcelマクロ

対象:Excel97, Excel2000, Excel2002, Excel2003

実務でExcelファイルを扱っていると、ワークシートの数が増えていきます。

そうなると、
「ワークシート名の一覧を作成したいのですが...」
といった要望が出てきます。

[スポンサードリンク]

For~Nextループでシート名一覧を作成するサンプルマクロ

以下のようなマクロで、アクティブなブックの先頭に「シート名一覧」というワークシートが挿入され、A列にシート名の一覧が作成されます。


Sub シート名一覧を作成する_1()

 Dim i As Long

 Sheets.Add Before:=Sheets(1)
 ActiveSheet.Name = "シート名一覧"

 For i = 2 To Sheets.Count
  Cells(i - 1, "A").Value = Sheets(i).Name
 Next i

End Sub

アクティブなブックの先頭(左端)にシートを挿入して、
 Sheets.Add Before:=Sheets(1)

名前を「シート名一覧」に変更してから、
 ActiveSheet.Name = "シート名一覧"

元々の1枚目のシートから最後のシートの枚数分For~Nextループを回して、
 For i = 2 To Sheets.Count

A列の1行目からシート名を書き出しています。
  Cells(i - 1, "A").Value = Sheets(i).Name

For Each~Nextループでシート名一覧を作成するサンプルマクロ

上記のマクロと同じことをFor Each~Nextループを使って行うとすると、以下のとおりです。


Sub シート名一覧を作成する_2()

 Dim sh As Object ' Worksheetオブジェクト または Chartオブジェクト
 Dim n As Long ' シート名を書き出す行番号

 Sheets.Add Before:=Sheets(1)
 ActiveSheet.Name = "シート名一覧"

 n = 1
 For Each sh in Sheets
  Cells(n, "A").Value = sh.Name
  n = n + 1
 Next sh

End Sub

先にご紹介したFor~Nextループを使ったマクロの場合、カウンター変数・iを使ってそのままシートへの書き出しができましたが、For Each~Nextループの場合は、書き出す行番号を指定するための変数を別に用意する必要があること、
 Dim n As Long
また、その変数を、For Each~Nextループの中で、
  n = n + 1
とインクリメントしなければならないなところが、For~NextループとFor Each~Nextループの違いが明確になっていない段階の方の場合、注意が必要な箇所でしょう。

アクティブなブックの中にワークシート(Worksheetオブジェクト)もグラフシート(Chartオブジェクト)も存在することを想定して、
 Dim sh As Object
と総称オブジェクト型で、オブジェクト変数・shを宣言していますが、ワークシートしか存在していないのであれば、
 Dim sh As Worksheet
と宣言してしまうほうがいいでしょう。

全シートや全ブックに対する処理を行うような場合、For Each~Nextループは便利なのですが、今回ご紹介したマクロのような形でワークシートに書き出しを行うような場合、For~Nextループのほうがシンプルなコードになることが少なくありません。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を取得して一覧を作成するExcelマクロ

TrackBack:6

TrackBack URL
同じブック内のシートにハイパーリンク−HYPERLINK関数 from インストラクターのネタ帳
対象:Excel 関数を使ってハイパーリンクを張る方法をご紹介しました。 この方法を知った方からは、 同じワークブック内の別のワークシートにリンクを張るにはどうすればいいのでしょう? というご質問をいただきます。...
マクロにショートカットキーを割り当てる−マクロダイアログ from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 これまでこのサイトでいくつかのマクロをご紹介してきました。 ・ワークシート名一覧を作成したい ・非表示シートをまとめて表示したい ・シートを並べ替えたい ・マクロでフリガナをふる 登録したマクロを実行する方法はいろいろあります...
別シートへのセル参照をオートフィルで−INDIRECT関数 from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 別のワークシートのセルを参照する方法をご紹介しました。 この方法をご存知の方からは、 「簡単に他の複数のシートのデータを表示させる方法はないのでしょうか?」 「オートフィルを使って他のシートのセルの値を表示できませんか?」 ...
不要なワークシートを削除する from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 Excelを使って実務で資料作成をしていると、ワークシートの整理整頓をする処理が必要になることが少なくありません。 このサイトでは、ワークシートの整理に役立つ以下のようなVBAマクロをご紹介してきました。 ・シート名一覧作成マクロ ...
シート名を右から取得するExcelマクロ from インストラクターのネタ帳
アクティブなブックのシート名を右から順番に取得するExcel(エクセル)マクロをご紹介しています。
全シート名をイミディエイトウィンドウにDebug.Print from インストラクターのネタ帳
全シート名をイミディエイトウィンドウにDebug.PrintするExcel(エクセル)マクロと、イミディエイトウィンドウで実行するコードをご紹介しています。

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を取得して一覧を作成するExcelマクロ

「Sheets・Worksheet」の記事一覧

検索


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

.