• ベストアンサー

エクセル:シート名を手入力でなく、セル「A1」の文字を出したい。

いつもお世話になります。 エクセルのシート名についての質問です。 いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。 ◆そこで、 (1) セル「A1」に入力されてある文字を自動で出す (2) もしくはマクロボタンを押すと「A1」に入力されてあるものが「シート名」として変わる というようにしたいのですが、その方法について教えてください。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは。 (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

yastaro
質問者

お礼

GreatDragonさん、ありがとうございました。 最高のお答えをいただきました。 (1)は、すべてのワークシートに機能する点で、そこまでできるとは思ってなかったので驚きとともにうれしく使わせていただきます。 (2)についても感謝です。 本当にありがとうございました。

その他の回答 (2)

  • zuntac
  • ベストアンサー率36% (45/124)
回答No.2

イベントを使うと、自動的にマクロが実行されます。 以下のマクロをSheet1に書いておけば、A1に値を書き込むだけでシート名が設定されます。 Private Sub Worksheet_Change(ByVal target As Range)   ActiveSheet.Name = ActiveSheet.Range("A1") End Sub

yastaro
質問者

お礼

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

noname#123709
noname#123709
回答No.1

こんな感じでしょうか? Sub test() On Error GoTo MB ActiveSheet.Name = ActiveSheet.Range("A1").Value MB: MsgBox "セルが空白かシート名に使用できない文字があります" End Sub

yastaro
質問者

お礼

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

関連するQ&A

専門家に質問してみよう