追加したワークシートにイベントマクロを自動作成するには?

Question Previous Next
大変お世話になります。
 ・シートの自動追加の例をみて実行しましたらokでした。感動しました。
 ・また、入力セルにより、wooksheet_change でのtarget 指定での例も、感動しました。
ただ、シートを自動作成しながら、wooksheet_change でのtarget 指定コードも同時に作成したいのですが、そんなことできますか? 是非、お教え下さい。
Answer   Copyright (C) 2003.5.10 永井善王
このHPをご活用いただき、ありがとうございます。
「シートの自動追加の例」とは、Macro[ブックシート・基本型]のページの
シートを追加するの下記のようなコードでしょうか。

    ActiveWorkbook.Worksheets.Add

そして、「wooksheet_change でのtarget 指定での例」とは、FAQ・フロー制御の
特定のセルに特定の値が入力されたときにマクロを自動的に実行するにはの下記のコードから始まるイベントマクロのことですね。

    Private Sub Worksheet_Change(ByVal Target As Range)

結論から申しますと、「シートを自動作成しながら、wooksheet_change でのtarget 指定コードも同時に作成」することは、
一般的には無理でしょう。 その理由は、マクロでマクロを作成することになりますが、それを許すとウィルス対策上の問題が発生するからです。絶対出来ないわけではありませんが、代替策で実現されたらいかかでしょうか。
シートの移動またはコピー
ところで、新しいシートを追加して、そのシートの特定のセルに値が入力されたときに Changeイベントマクロを実行させたいのは、なぜでしょうか?
新しいシートを追加した直後は、何も入っていない真っ白状態ですから、どのセルをクリックすればよいのかユーザーにはわかりませんね。 もしかすると、くじ引き用のシートでしょうか。

そのことは置いておいて、簡単な代替策をご紹介します。
シートを追加する方法の代わりに、あらかじめ他のシートに Changeイベントマクロを作成しておいて、そのシートをそっくりコピーしてしまいます。
[ツール]メニューの[シートの移動またはコピー]で、右図のように[コピーを作成する]にチェックをつけて[OK]する方法をご存知ですね。そうすれば、シートと共にイベントマクロもコピーされます。
このマクロは自動記録できるはずですからお試しください。

 

Excel VBA Macro