アクティブセルの値をワークシート名にするマクロと、そのマクロをショートカットキーで呼び出す方法をご紹介しました。
この方法を知った方からは、
「自動的にセルの値がワークシート名になるようにできないのでしょうか?」
といったご質問をいただくこともあります。
マクロをいちいち呼び出すのが面倒に感じた方からのご質問です。
マクロではなくイベントプロシージャにしてしまえばセルの値を自動的にワークシート名にすることも可能です。
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セルの値はシート名にできません。"
とメッセージを表示するようにしています。
- Newer:常にテキストのみ貼り付けるように
- Older:上期・下期の表示をするには?−MONTH関数・IF関数・AND関数
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » セルの値をワークシート名にする−Worksheet_Change