- ベストアンサー
VBAでシートが追加されたタイミングで動かしたい
- VBAを使用して、シートが追加されるたびにマクロを自動実行する方法を知りたい。
- 現在は、シートを追加するたびにセルの値からシート名を取得し、変更するVBAを使用しています。
- ご教授いただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ThisWorkbookのモジュールに Workbook_NewSheet というタイミングがありますよ。 ズバリ、新しいシートが出来たら動くタイミングです。 例えば Private Sub Workbook_NewSheet(ByVal Sh As Object) Sh.Name = "シート" & Sheets.Count + 1 MsgBox "It's New!" End Sub こんな感じですね。 新規シートのI9セルはこの時点では空白ですが・・・ そこは取り越し苦労ですよね、きっと(笑)。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
回答よりも、どう調べたらよいかを覚えよ。 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イベントは使わないということ。
お礼
ありがとうございます。イベントという概念が思いつかず、 調べたものの、うまくいかなかったのですが、 イベントプロシージャの利用で、うまく動きました!! ボタンを作る方法も考えたのですが、 私だけが使うものではないのと、ボタンのあるシートまで行く 手間を考えたら、ダブルクリックをキーにすることで落ち着きました。 ありがとうございます!
お礼
ありがとうございます。 私の日本語能力が足りず、シートの追加⇒別ファイルからの複製・移動 だったのです…。 新規シートの追加ではなかったので、I9にはデータが入っていることに なっておりました。申し訳ありません(涙) ThisWorkbookのモジュールを色々調べることで、 ダブルクリック別のキーを使うことで落ち着きました。 まだまだわからないことだらけで試行錯誤ばかりですが 頑張ります! ありがとうございます!