- ベストアンサー
Excel VBAマクロの実行方法について
- Excel VBAマクロを実行するための記述が見当たらない
- Worksheet_Changeイベントを使用してセルのテキストチェンジをトリガーとしてマクロを実行する方法をご存知ですか?
- Excel2010で使用する場合、上記の方法以外にセルの変更をトリガーとするマクロを実行する方法を教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >セルのテキストチェンジをトリガーとしてマクロを動作させる方法 クラスモジュールは、そのブックだけとは限らないです。 別の所にあっても、目的のイベントは働きますね。(それではウィルスもどきです(^^;) アドインでも可能ですが、COMアドインの方は、それが出来たかは知りません。 COMアドインは、新しいテクニックは知りませんから。 他にも、一般的には ThisWorkbook モジュールが一番濃厚です。 それ以外に、古いテクニックですが、標準モジュールに、Ver.5 辺りのVBAの方法で、"OnEntry" メソッドがありますが、今、Excel2010で試してみましたら、まだ生きているようですね。 しかし、Helpには出てきませんでした。
その他の回答 (1)
- f272
- ベストアンサー率46% (8529/18254)
シートモジュールの中やクラスモジュールの中は見たのでしょうか?
補足
>f272様 早速返答いただきましてありがとうございます。 シートモジュール、クラスモジュールの中も確認しました。 クラスモジュールにはプログラムはありませんでしたが、シートモジュールには以下の中身のないプログラムが記載されています。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub 動作の補足として、デバッグで確認した動きを以下に記載します。 (1)セルに値(数値)を入力してEnter (2)標準モジュール内のプログラムが動作(特定のセルがActiveの場合、別のセルをActiveにする) (3)上記のシートモジュールが動作 ※試しにマクロの記録を行って確認しましたが、上記の動作と同じでした。 私としてはEnter押した直後に標準モジュールのプログラムが動作していることが分からない状態です。 宜しくお願い致します。
お礼
>WindFaller様 早速の回答ありがとうございます。 標準モジュールを再度確認した結果、OnEntryメソッドによって実現されている機能であることが分かり、無事悩みが解決できました。以下のようなサンプルプログラムを作成し動作も確認できました。ご教授いただき、ありがとうございます。 調べてみると、もともとのプログラムが2001年に作成されたものだったのでOnEntryが使用されていたのではないかと思っています。 サンプル: Sub Auto_Open() TrapEntry End Sub Sub TrapEntry() ActiveWorkbook.Worksheets("Sheet1").OnEntry = "movecells" End Sub Sub movecells() If ActiveCell.Address() = "$C$2" Then Range("G1").Select Exit Sub End If End Sub