• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでシートが追加されたタイミングで動かしたい)

VBAでシートが追加されたタイミングで動かしたい

このQ&Aのポイント
  • VBAを使用して、シートが追加されるたびにマクロを自動実行する方法を知りたい。
  • 現在は、シートを追加するたびにセルの値からシート名を取得し、変更するVBAを使用しています。
  • ご教授いただけると幸いです。

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

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

ThisWorkbookのモジュールに   Workbook_NewSheet というタイミングがありますよ。 ズバリ、新しいシートが出来たら動くタイミングです。 例えば Private Sub Workbook_NewSheet(ByVal Sh As Object)   Sh.Name = "シート" & Sheets.Count + 1   MsgBox "It's New!" End Sub こんな感じですね。 新規シートのI9セルはこの時点では空白ですが・・・ そこは取り越し苦労ですよね、きっと(笑)。

braidal
質問者

お礼

ありがとうございます。 私の日本語能力が足りず、シートの追加⇒別ファイルからの複製・移動 だったのです…。 新規シートの追加ではなかったので、I9にはデータが入っていることに なっておりました。申し訳ありません(涙) ThisWorkbookのモジュールを色々調べることで、 ダブルクリック別のキーを使うことで落ち着きました。 まだまだわからないことだらけで試行錯誤ばかりですが 頑張ります! ありがとうございます!

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

回答よりも、どう調べたらよいかを覚えよ。 Googleで「VBA シート 追加 イベント」で照会すればよい。 この程度の内容なら、ほとんどGoogle照会で済むのだ。質問コーナーに質問する必要なし。 http://www.excel-excel.com/tips/vba_463.html他3、4件はずばりの課題の解説だろう。 ーー VBE画面でプロジェクトエクスプローラーを出し、ThisWorkbookをクリック。 「General」のところで、「ThisWorkbook]をクリック。 「General」と同行で「Open」とでているところの▼をクリック。 「NewSheet」をクリック。 Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub が出る。End Subの前の、その空白行に1行記述して Private Sub Workbook_NewSheet(ByVal Sh As Object) Sh.Name = Worksheets("Sheet1").Range("N3") End Sub ーー (実際にシート挿入操作) ホームー挿入の▼をクリックー「シートの挿入」をクリック。 Sheet1のシートのN3セルに「あああ」と入れてあると、新シートの挿入と 名前が「あああ」になる。 しかし2度目のシートのとき、気を付けないと、同じシート名「あああ」を作ろうとしてエラーになる。 この防止対策が必要かと思う。 なれないうちは、イベントの利用は怖いものと心得よ。 それよりも、ボタンを作って、そのイベントで、VBAでシート挿入して、VBAでシート名前を適当なものに設定するのが、普通のやり方かと思う。New_Sheetイベントは使わないということ。

braidal
質問者

お礼

ありがとうございます。イベントという概念が思いつかず、 調べたものの、うまくいかなかったのですが、 イベントプロシージャの利用で、うまく動きました!! ボタンを作る方法も考えたのですが、 私だけが使うものではないのと、ボタンのあるシートまで行く 手間を考えたら、ダブルクリックをキーにすることで落ち着きました。 ありがとうございます!

関連するQ&A