見出し画像

Excelのシート名を一覧にする個人用VBAマクロ

ちょーーー久しぶりにVBAを触って、「変数宣言ってなんだっけ」「あれ、文末ってセミコロンつけるんだっけ」からスタートしたということもあって記録兼で記事にしてみました。このレベルをQiitaに上げるのは恥ずかしいのでnoteで。
最近はGoogleスプレッドシート&Google Apps Scriptの布教に努めてたけどやっぱりExcelすごい便利。

経緯&やりたいこと

期末棚卸の決算仕訳をするのに棚卸表がこんな感じで複数シートにまたがっていて、それぞれからコピペして一覧作るのめんどくせーーーーーとなりました。
取得したい数字は各シートのG1セルにあるので、シート名さえわかればINDIRECT関数で一瞬で取得できます。

シート1 A社から仕入れたものの在庫
シート2 B社から仕入れたものの在庫
・・・・・・

毎回使うExcelじゃないからVBAなんて埋め込んでもしょうがないけど今後の人生で複数回使いそうなので個人用マクロにしてみました。

コード

Sub シート名一覧取得()
'
' シート名一覧取得 Macro
'
Dim sheetCnt As Long
Dim sheetName As String
Dim i As Long

sheetCnt = ActiveWorkbook.Sheets.Count

For i = 1 To sheetCnt
   sheetName = ActiveWorkbook.Sheets(i).Name
   ActiveCell.Offset(i - 1, 0).Value = sheetName
   
Next i

'
End Sub

やってること

① 開いているブックのシート総数を取得
② シート名を順番に取得
③ アクティブなセル以下に順番にシート名を入力

さいごに

対象ブックの中に作業シートを作らないといけないのと、作業シートのシート名まで取得されちゃうのが難点ですね。
セル入力せずに、メッセージボックスに出力して、それをコピペしてねとかでもいいかもしれません。

この記事が気に入ったらサポートをしてみませんか?