エクセルVBAでシート名に関する操作を行うNameプロパティを説明します。
簡単に扱えるコードですが重要の高いプロパティですので、ここはキッチリ熟していきましょう。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAでワークシートの名前についての「名付け」「変更」「取得」と「一覧」を行うVBAコードについて説明します。
VBAコードとしては、WorkSheetオブジェクトのNameプロパティを使用することになります。
VBAプログラム作成では、非常に重要なコードになりますので記述方法を覚えておきましょう。
- シートの知識
- シートの存在を確認する2種類のコードと実務での例題
- シートクリアーを目的のメソッド別にVBA最速理解
- シートのコピーを最速に理解!VBAコードで異なる結果
- Excelシートを追加・挿入するAddメソッドの使い方
- シートの選択・指定方法とその意味。簡単でも軽視してはダメ
- エクセルシートの名付け・変更と取得そして一覧化するコード
- ワークシートのブック内移動と新規ブックへの移転を分かりやすく
- エクセルシートの並び順が思い通り!シート名一覧で自由自在
- Excelシートを保護する。 記述方法とプロテクトされない操作
- エクセルシートを削除する。Deleteの使い方と注意ポイント
- エクセルシートの非表示コードをパスワード管理するVBA
- ワークシートを変数化する3つの手法 オブジェクト変数など
コンテンツ
シート名にはNameプロパティが重要
Nameプロパティはシート名をVBA操作する上では非常に重要なコードです。
基本操作部分をキッチリ理解しておきましょう。
Sheetオブジェクト.Name
①シート名の名付け
新しく作成したシートに名前を付ける方法です。
シートを追加してそのシートに名前「新規シート」を付けます。
Sub シート名を付ける1()
Worksheets.Add
ActiveSheet.Name = "新規シート"
End Sub
②シート名の変更
シートを指定( WorkSheets(“Sheet1”) )して、変更する名前を表示( “シート名” )する。
Sub シート名を付ける2()
ThisWorkbook.Worksheets("Sheet1").Name = "シート1"
End Sub
③シート名の取得
シート名を知りたい。その知りたいシートを指定するのに、シートのインデックス番号を利用します。
「左から〇〇番目にあるシートの名前は?」という形でのシート名の取得を行います。
ただし、アクティブシートの場合は番号指定せずに、そのままNameプロパティを使います。
インデックス番号を使用したシート名取得
インデックス番号1から4までのシートの名前を取得します。
(シート数を超えてのインデックス番号の指定はエラーになります。)
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
アクティブシートのシート名取得
アクティブシートはそれ自体で存在場所を特定できていますので、そのままNameプロパティで名前を取得することが出来ます。
Sub シート名を付ける4()
MsgBox "ActiveSheet= " & ActiveSheet.Name
End Sub
シート名を一覧化するコードの作成
エクセルBOOKにあるすべてのシートのシート名を取得したいケースも多くあります。
このNameプロパティを使えば ” それほど難しくなく ” 取得することが出来ます。
このVBAコードの作成パターンを覚えておくと便利なことも多いです。
シートインデックス番号を使う方法
VBAコードを実行すると、一番左にあるシートのA列にインデックス番号、B列にその番号のシート名がリスト表示されます。
開始番号1から最終番号Worksheets.Countまでループしてコード実行します。
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
シートインデックス番号を使わない方法
VBAコードを実行すると、二番左にあるシートのA列にインデックス番号、B列にその番号のシート名がリスト表示されます。
すべてのシートに対して順番に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
もくじ作成の関連記事
一覧表作成に関連して、もう少し複雑になりますが、もくじページを作成して、もくじページから好きなページにジャンプできるプログラムを作成できる記事を準備しています。参考にしてみてください。
エクセル多用途もくじシートを自動作成するVBAまとめ
シート名の名付け変更や取得は、VBAプログラムの中でも結構重要な位置づけにあります。
比較的難しくない項目ではあっても、甘く見てはいけません。
しっかりと知っておくことが必要です。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。