プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。
エクセルのシート名についての質問です。
いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。

◆そこで、
(1) セル「A1」に入力されてある文字を自動で出す
(2) もしくはマクロボタンを押すと「A1」に入力されてあるものが「シート名」として変わる

というようにしたいのですが、その方法について教えてください。よろしくお願いいたします。

A 回答 (3件)

こんな感じでしょうか?


Sub test()
On Error GoTo MB
ActiveSheet.Name = ActiveSheet.Range("A1").Value
MB: MsgBox "セルが空白かシート名に使用できない文字があります"
End Sub
    • good
    • 5
この回答へのお礼

SuperMildさん、ご回答ありがとうございました。
せっかくのご回答に、ポイントを発行できなくてごめんなさい。後続の方のご回答の内容が私の質問により、的確でしたのでお許しください。
シート名はマクロ実行で確かに変わりました。ありがとうございました。
ただ、毎回メッセージボックスが出てきてしまいます。この点私の理解(勉強)不足ならお許しください。理解に達しませんでした。
それにしても早速のご回答を心より感謝申し上げます。^^

お礼日時:2006/03/13 14:39

イベントを使うと、自動的にマクロが実行されます。


以下のマクロをSheet1に書いておけば、A1に値を書き込むだけでシート名が設定されます。
Private Sub Worksheet_Change(ByVal target As Range)
  ActiveSheet.Name = ActiveSheet.Range("A1")
End Sub
    • good
    • 21
この回答へのお礼

zuntacさん、ありがとうございました。
各シートのコードに書き込めば、シート名が変わりました。感謝申し上げます。

お礼日時:2006/03/13 14:34

こんにちは。




(1)の場合は、下記のコードを ThisWorkbook に記述してください。
どのワークシートでも機能します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value
End Sub


(2)場合は、下記のコードを標準モジュールに記述しボタンにマクロ登録してください。
(すべてのシートにボタンを貼り付けるのは面倒でしょうから、ツールバーにボタンとして追加すると良いと思います。)

Public Sub SheetName()
ActiveSheet.Name = Range("A1").Value
End Sub
    • good
    • 66
この回答へのお礼

GreatDragonさん、ありがとうございました。
最高のお答えをいただきました。

(1)は、すべてのワークシートに機能する点で、そこまでできるとは思ってなかったので驚きとともにうれしく使わせていただきます。

(2)についても感謝です。

本当にありがとうございました。

お礼日時:2006/03/13 14:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A