【Excel VBA】シートの名前を変更する

当ページのリンクには広告が含まれている可能性があります。
シートの名前を変更する

こんにちは、ユーキです。

今回は、シートの名前の変更方法を紹介します。

目次

シートの名前を変更する

シートのNameプロパティを設定することで、変更できます。

現在の選択中のシート名を変更する

選択中のシート(ActiveSheet)の変更する書き方は以下になります。

ActiveSheet.Name = "ユーキブログ"

指定したシートのシート名を変更する

シートを指定して名前を変更する場合も同じです。

ActiveWorkbook.Worksheets(1).Name = "変更1"
'シートの指定はシート名を指定することも可能です。
ActiveWorkbook.Worksheets("変更1").Name = "ユーキブログ"

シートは変数に代入していてもOKです。以下のような書き方をすることもできます。

Dim sh As Worksheet

Set sh = ActiveWorkbook.Worksheets(1)
sh.Name = "変更2"

こんなときはどうなる?

エラーが発生する状態を知っておきましょう。

すでに同じ名前がある

次のようなコードを書くと、2行目でエラーが発生します。

ActiveWorkbook.Worksheets(1).Name = "変更1"
ActiveWorkbook.Worksheets(2).Name = "変更1"

同じ名前を指定する可能性がある場合、「On Error」を使って、エラートラップをしておきましょう。

次のように書くと、エラーが発生した部分はスキップされます。

Private Sub SheetNameChage()
On Error Resume Next

    ActiveWorkbook.Worksheets(1).Name = "変更1"
    '同じ名前になるので、この処理はスキップされる
    ActiveWorkbook.Worksheets(2).Name = "変更1"
    ActiveWorkbook.Worksheets(1).Name = "変更2"

End Sub

エラーが発生した箇所で処理を中断して、ラベルに処理を飛ばすようにするには、次のように書きます。

Private Sub SheetNameChage()
On Error GoTo ErrLabel

    ActiveWorkbook.Worksheets(1).Name = "変更1"
    '同じ名前になるので、エラーが発生
    ActiveWorkbook.Worksheets(2).Name = "変更1"
    'この処理は実行されない
    ActiveWorkbook.Worksheets(1).Name = "変更2"

    Exit Sub
    
ErrLabel:
    MsgBox "エラーが発生したので、処理を終了します"

End Sub

エラートラップについは、以下の記事を参考にしてください。

指定したシートが存在しない

存在しないシートを指定しても、エラーになります。

’ブックにシートが9までしかない場合、以下はエラーになる
ActiveWorkbook.Worksheets(10).Name = "変更1"
’存在しないシート名を指定しても、エラーになる
ActiveWorkbook.Worksheets("変更2").Name = "変更1"

まとめ

今回は、シートの名前の変更方法を紹介しました。

Point
  • シートのNameプロパティを設定する
  • すでに存在するシート名を指定すると、エラーになる
  • 存在しないシートを指定すると、エラーになる

少しでもお役に立てば、幸いです。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅好き職業プログラマ。文系大学卒業後、ITソフトウエア開発会社に勤務してプログラミング言語を学ぶ。現在は転職し、プロジェクトマネージャ的ポジションで生産管理システムの開発にあたる。
得意言語は、VB、VB.NET、C#.NET、Java、SQLなど。

目次