VBAでシート名を取得|サンプルコード多数

Excel VBA(Visual Basic for Applications)を使ってシート名を取得するスキルは、データ解析やレポート作成、自動化など多くの業務で役立ちます。この記事では、基本的なシート名の取得方法から応用的なテクニックまで解説します。

目次

Nameプロパティとは?

Excel VBAでシート名を操作する際には、Nameプロパティが一般的に使用されます。このプロパティは、シートオブジェクトや他の多くのオブジェクトに共通して存在し、オブジェクトの「名前」を取得または設定するために使用されます。

基本的な書式

オブジェクト.Name

この書式において、オブジェクトはシートを指す場合が多いですが、他のVBAオブジェクトにも適用可能です。

アクティブなシートのシート名を取得する方法

Excelで作業中の「アクティブなシート」、つまり現在選択されているシートの名前を知りたい場合は、ActiveSheet.Nameプロパティを使用します。

Sub GetActiveSheetName()
    Dim sheetName As String
    sheetName = ActiveSheet.Name
    MsgBox "アクティブなシートの名前は " & sheetName & " です。"
End Sub

このコードを実行すると、メッセージボックスが表示され、アクティブなシートの名前が表示されます。

使いどころ

  • レポート作成時に特定のシートにデータを出力したい場合
  • アクティブなシートに依存する処理を行いたい場合

シート番号を指定してシート名を取得する方法

特定のシート番号(例:1番目、2番目など)に基づいてシート名を取得する場合は、Worksheets(シート番号).Nameプロパティを使用します。

Sub GetSheetNameByIndex()
    Dim sheetName As String
    sheetName = Worksheets(2).Name
    MsgBox "2番目のシートの名前は " & sheetName & " です。"
End Sub

このコードを実行すると、2番目のシートの名前がメッセージボックスで表示されます。

使いどころ

  • 複数のシートがあり、特定の順番のシートに対して操作を行いたい場合
  • シートの順番が固定されているレポートやテンプレートで作業する場合

全てのシート名の一覧を取得する方法

Excelファイルに含まれる全てのシート名を一覧で取得するには、WorksheetsコレクションとFor Nextループを組み合わせます。

Sub GetAllSheetNames()
    Dim i As Integer
    Dim sheetList As String
    sheetList = "シート名一覧:" & vbCrLf
    For i = 1 To Worksheets.Count
        sheetList = sheetList & i & ". " & Worksheets(i).Name & vbCrLf
    Next i
    MsgBox sheetList
End Sub

このコードを実行すると、全てのシート名が一覧でメッセージボックスに表示されます。

使いどころ

  • ワークブック内の全シートを一覧で確認したい場合
  • シート名を基に何らかの処理(例:シートのコピー、削除など)を行いたい場合

VBAでシート名を取得する際のよくある質問(FAQ)

Q:ActiveSheet.NameWorksheets(1).Nameの違いは何ですか?

A:ActiveSheet.Nameは現在Excelでアクティブ(選択されている)なシートの名前を取得します。一方で、Worksheets(1).Nameはワークブック内の1番目のシートの名前を取得します。アクティブなシートが必ずしも1番目のシートであるわけではないため、用途に応じて使い分けが必要です。

Q:シート名を取得する際にエラーが出る場合の対処法は?

A:エラーの原因はいくつか考えられますが、よくあるケースとしては指定したシートが存在しない、またはワークブックが開いていない場合です。エラー処理としては、On Error Resume NextOn Error GoToを使用して、エラーが発生した場合の処理を記述するとよいでしょう。

Q:複数のワークブックが開いている場合、特定のワークブックのシート名を取得する方法は?

A:複数のワークブックが開いている場合、Workbooks("ワークブック名").Worksheets(1).Nameのようにワークブック名を指定してシート名を取得することができます。

Q:シート名を取得した後で、その名前を使って何ができますか?

A:シート名を取得した後には、その名前を使ってシートを選択したり、シートにデータを出力したり、シートをコピー・移動・削除するなど、多くの操作が可能です。

Q:シート名が日本語の場合、特別な処理は必要ですか?

A:Excel VBAは日本語のシート名も問題なく扱えますので、特別な処理は基本的には不要です。ただし、シート名に使用できない文字(例:/?など)が含まれている場合はエラーとなる可能性があります。

Q:シート名を取得するだけでなく、その後に自動でシートを選択することはできますか?

A:はい、シート名を取得した後にWorksheets("シート名").Selectを使用することで、そのシートを自動で選択することができます。

関連動画

まとめ

この記事で解説した各方法とサンプルコードを使えば、Excel VBAでシート名を効率的に取得できるようになります。特に、Nameプロパティの使い方を理解することで、Excel VBAの基本的な操作にも幅が出るでしょう。

Excelのショートカットキーの練習

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストをリセット
現在の除外状況のURL取得
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次