- ベストアンサー
EXCEL 2010 の VBAにおいて
EXCEL 2010 の VBAにおいて、あるシートのselect、SelectionChange またはactivateが、マウスクリックによるものか、VBAによるものかをVBA側で判断する事は可能でしょうか? Application.ScreenUpdating等の動作をマウスクリックによるものか、VBAによるものかで区別したいのです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
すげー単純な方法ですが。 VBAの実行を開始する先頭のステートメントで、 どこかのシートの空きセルに"1"でもなんでも値を 入力しておき、ENDステートメントの直前に、その 値を消去するという手順を突っ込んでおきます。 こうすれば、VBAが実行中かどうかは、そのセルを 参照すればいいわけです。 空きセルにデータを置いておく、というのはVBAで 結構使えるテクニックですよ。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
回答No.2
確実に仕分ける方法としては、そういう行動を起こすVBAのプログラムの中でapplication.enableeventsをfalseにしておいてすれば、所定のイベントが起きれば手動起因、そうでないならVBAが起因です。
お礼
ありがとうございます。 VBAの中で、シートを行ったり来たりするので、VBA実行状況用のシートを作っておくっていうのもありかもしれませんね。