エクセルシートの名付け・変更と取得そして一覧化するコード

エクセルVBAでシート名に関する操作を行うNameプロパティを説明します。
簡単に扱えるコードですが重要の高いプロパティですので、ここはキッチリ熟していきましょう。

こんにちは、じゅんぱ店長(@junpa33)です。

エクセルVBAでワークシートの名前についての「名付け」「変更」「取得」と「一覧」を行うVBAコードについて説明します。

VBAコードとしては、WorkSheetオブジェクトのNameプロパティを使用することになります。

VBAプログラム作成では、非常に重要なコードになりますので記述方法を覚えておきましょう。

シート名にはNameプロパティが重要

vbasheetnamep012

Nameプロパティはシート名をVBA操作する上では非常に重要なコードです。

基本操作部分をキッチリ理解しておきましょう。

Nameプロパティの記述方法

Sheetオブジェクト.Name

①シート名の名付け

新しく作成したシートに名前を付ける方法です。

シートを追加してそのシートに名前「新規シート」を付けます。

VBA
Sub シート名を付ける1()
    Worksheets.Add
    ActiveSheet.Name = "新規シート"
End Sub
vbasheetnamep000
新しいシートに名前を付ける
vbaaddeyecatch Excelシートを追加・挿入するAddメソッドの使い方

②シート名の変更

シートを指定( WorkSheets(“Sheet1”) )して、変更する名前を表示( “シート名” )する。

VBA
Sub シート名を付ける2()
    ThisWorkbook.Worksheets("Sheet1").Name = "シート1"
End Sub
vbasheetnamep001
元のシート
矢印下001
vbasheetnamep002
シート名が変更された

③シート名の取得

シート名を知りたい。その知りたいシートを指定するのに、シートのインデックス番号を利用します。

「左から〇〇番目にあるシートの名前は?」という形でのシート名の取得を行います。

ただし、アクティブシートの場合は番号指定せずに、そのままNameプロパティを使います。

参考記事

インデックス番号については詳しくはこちらを参考にしてください。

vbasheetspecifyeyecatch シートの選択・指定方法と意味。簡単でも軽視してはダメ
vbasheetnamep007
シート名取得

インデックス番号を使用したシート名取得

インデックス番号1から4までのシートの名前を取得します。

(シート数を超えてのインデックス番号の指定はエラーになります。)

VBA
Sub シート名を付ける3()
    Dim ShN1, ShN2, ShN3, ShN4 As String
        ShN1 = Worksheets(1).Name
        ShN2 = Worksheets(2).Name
        ShN3 = Worksheets(3).Name
        ShN4 = Worksheets(4).Name
        MsgBox "Worksheets(1)= " & ShN1 & vbCrLf & _
        "Worksheets(2)= " & ShN2 & vbCrLf & _
        "Worksheets(3)= " & ShN3 & vbCrLf & _
        "Worksheets(4)= " & ShN4
End Sub
vbasheetnamep008
インデックス番号からのシート名

アクティブシートのシート名取得

アクティブシートはそれ自体で存在場所を特定できていますので、そのままNameプロパティで名前を取得することが出来ます。

VBA
Sub シート名を付ける4()
    MsgBox "ActiveSheet= " & ActiveSheet.Name
End Sub
vbasheetnamep009
Activesheetからのシート名

シート名を一覧化するコードの作成

vbasheetnamep013

エクセルBOOKにあるすべてのシートのシート名を取得したいケースも多くあります。

このNameプロパティを使えば ” それほど難しくなく ” 取得することが出来ます。

このVBAコードの作成パターンを覚えておくと便利なことも多いです。

vbasheetnamep007

シートインデックス番号を使う方法

VBAコードを実行すると、一番左にあるシートのA列にインデックス番号、B列にその番号のシート名がリスト表示されます。

開始番号1から最終番号Worksheets.Countまでループしてコード実行します。

VBA
Sub シート名一覧1()
    Dim n As Long
    Dim ShN As String
        For n = 1 To Worksheets.Count
            ShN = Worksheets(n).Name
            With Worksheets(1).Cells(n, 1)
                .Value = n
                .Offset(, 1) = ShN
            End With
        Next n
End Sub
vbasheetnamep010
実行結果1

シートインデックス番号を使わない方法

VBAコードを実行すると、二番左にあるシートのA列にインデックス番号、B列にその番号のシート名がリスト表示されます。

すべてのシートに対して順番にVBAコードを実行していきます。

VBA
Sub シート名一覧2()
    Dim Sh As Worksheet
    Dim ShN As String
    Dim s As Long
        s = 1
        For Each Sh In Worksheets
            ShN = Sh.Name
            With Worksheets(2).Cells(s, 1)
                .Value = s
                .Offset(, 1) = ShN
            End With
            s = s + 1
        Next
End Sub
vbasheetnamep011
実行結果2

もくじ作成の関連記事

一覧表作成に関連して、もう少し複雑になりますが、もくじページを作成して、もくじページから好きなページにジャンプできるプログラムを作成できる記事を準備しています。参考にしてみてください。

vbatoclisteyecatch エクセル多用途もくじシートを自動作成するVBA

まとめ

vbasheetnamep014

シート名の名付け変更や取得は、VBAプログラムの中でも結構重要な位置づけにあります。

比較的難しくない項目ではあっても、甘く見てはいけません。

しっかりと知っておくことが必要です。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min