Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » セルの値をワークシート名にする−Worksheet_Change

セルの値をワークシート名にする−Worksheet_Change

対象:Excel2000, Excel2002, Excel2003, Excel2007

アクティブセルの値をワークシート名にするマクロと、そのマクロをショートカットキーで呼び出す方法をご紹介しました。

この方法を知った方からは、
「自動的にセルの値がワークシート名になるようにできないのでしょうか?」
といったご質問をいただくこともあります。

マクロをいちいち呼び出すのが面倒に感じた方からのご質問です。

[スポンサードリンク]

マクロではなくイベントプロシージャにしてしまえばセルの値を自動的にワークシート名にすることも可能です。

▼A1セルの値をシート名にするWorksheet_Changeイベントプロシージャ
Private Sub Worksheet_Change(ByVal Target As Range)

 On Error GoTo ERR_HANDLER

 If Target.Address(False, False) = "A1" Then
  ActiveSheet.Name = Range("A1").Value
 End If

 Exit Sub

ERR_HANDLER:

 MsgBox "現在のA1セルの値はシート名にできません。"

End Sub

▼サンプルファイル(003382.xls 34KByte)ダウンロード

A1セルの値をアクティブシート名にするには、
 ActiveSheet.Name = Range("A1").Value
だけでいいわけですが、この1行だけをWorksheet_Changeイベントプロシージャの中に書いておくと、ワークシート上で何らかの変更があったときにいちいちこのイベントプロシージャが実行されてしまいますので、それを防ぐために
 If Target.Address(False, False) = "A1" Then
とA1セルの値が変更になったときだけ実行されるようにしています。

IF文は、上記のように
 If Target.Address(False, False) = "A1" Then
でも、
 If Target.Address = "$A$1" Then
でもOKです。

シートの名前には使える文字の種類や文字数に制限があり、セルの値によってはエラーが発生する可能性があります。

そのためエラーのときにはERR_HANDLERまで飛ぶようにして、
 On Error GoTo ERR_HANDLER
そのERR_HANDLER内で
 MsgBox "現在のA1セルの値はシート名にできません。"
とメッセージを表示するようにしています。

関連語句
セル名をシート名にする

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » セルの値をワークシート名にする−Worksheet_Change

「イベントプロシージャ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.