【VBAマクロ】シート名を取得する方法を徹底解説【エクセル初心者向け】

スポンサードリンク
VBA
過去の自分
過去の自分

マクロで複数のエクセルシートを管理するために、シート名を取得したい…。

今の自分
今の自分

なるほど…。
シート名を取得することで、別のシートも操作することができ、
マクロの幅がさらに広がります!
では今回は、「VBA(マクロ)でシート名を取得する方法」
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。

スポンサードリンク

シート名を取得する方法(VBAマクロ)

「Name」を使います。
まずは実行見本をどうぞ。

実行見本

ひとまず全コードと実行結果をご覧ください。
解説は後ほど行います。

全コード

下記VBAコードは、アクティブシート(現在選択されているシート)のシート名を取得した例です。

Sub シート名を取得()
    Dim sheetName As String
    sheetName = ActiveSheet.Name
    MsgBox sheetName
End Sub

実行結果

実行結果

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

プロシージャの作成

Sub シート名を取得()

End Sub

プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。

変数の宣言

    Dim sheetName As String

上記コードにて、以降使用する変数の宣言を行っております。
変数や宣言についての詳しい解説は、下記記事をご参考ください。

シート名を取得

    sheetName = ActiveSheet.Name

上記コードにて、シート名を取得して変数「sheetName」に格納しています。
今回はアクティブシート(現在選択されているシート)のシート名を取得しています。

【 変数名 = ActiveSheet.Name 】

ActiveSheet.Name」は大文字小文字が混在していますので、記述する際はご注意ください。

4行目で、取得したシート名をメッセージボックスで出力しています。

メッセージボックス出力結果

メッセージボックスの出し方は下記記事をご参考ください。


アクティブシートではなく、選択されていないシートのシート名を取得することもできます。
下記VBAコードを見てください。

    sheetName = Worksheets(2).Name

(2)は「左から2番目」を示しています。
今回の場合は、「Sheet2」が取得されます。

番号でシート名を取得

一番左のシート名を取得したい場合は、(1)を、
一番右のシート名を取得したい場合は、(Sheets.count)と記述してください。

マクロが完成したら、実行して動作を確認してみましょう。

エクセル内に作成した自作のボタンを押してマクロを実行させることも可能です。
ボタンの作り方は、下記記事でわかりやすく解説しております。

スポンサードリンク

すべてのシート名を取得する方法

ブック内すべてのシート名を取得することもできます。
下記のVBAコードを見てください。

Sub すべてのシート名を取得()
    Dim ws As Worksheet
    Dim sheetList As String
    
    For Each ws In ThisWorkbook.Worksheets
        sheetList = sheetList & ws.Name & vbCrLf
    Next ws
    
    MsgBox sheetList, vbInformation, "シート名一覧"
End Sub

実行結果が下図です。

すべてのシート名を取得

【簡単なコード解説】
配列「sheetList」にシート名を追加する処理を、「For Each」で繰り返しています。
最後にメッセージボックスでシート名一覧を表示して完了です。

シート名一覧をメッセージボックスへの表示するのではなく、セルに書き出す方法も紹介いたします。

すべてのシート名をセルに書き出し

Sub すべてのシート名をセルに書き出し()
    Dim ws As Worksheet
    Dim newSheet As Worksheet
    Dim i As Integer
    
    Set newSheet = ThisWorkbook.Sheets.Add
    newSheet.Name = "シート名一覧"
    
    i = 1
    For Each ws In ThisWorkbook.Worksheets
        newSheet.Cells(i, 1).Value = ws.Name
        i = i + 1
    Next ws
End Sub
すべてのシート名をセルに書き出し

【簡単なコード解説】
「シート名一覧」という新しいシートを作成し、各シート名をA1から順番に書き込みしています。

スポンサードリンク

うまく動作しないときの対処法

エラーが発生する

コンパイルエラー・実行時エラー

コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。

警告表示

マクロが無効になっている表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。

スポンサードリンク

最後に

VBA(マクロ)でエクセルのシート名を取得する方法を解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました