• ベストアンサー

EXCEL 2010 の VBAにおいて

EXCEL 2010 の VBAにおいて、あるシートのselect、SelectionChange またはactivateが、マウスクリックによるものか、VBAによるものかをVBA側で判断する事は可能でしょうか? Application.ScreenUpdating等の動作をマウスクリックによるものか、VBAによるものかで区別したいのです。 よろしくお願いします。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

すげー単純な方法ですが。 VBAの実行を開始する先頭のステートメントで、 どこかのシートの空きセルに"1"でもなんでも値を 入力しておき、ENDステートメントの直前に、その 値を消去するという手順を突っ込んでおきます。 こうすれば、VBAが実行中かどうかは、そのセルを 参照すればいいわけです。 空きセルにデータを置いておく、というのはVBAで 結構使えるテクニックですよ。

kichi4182
質問者

お礼

ありがとうございます。 VBAの中で、シートを行ったり来たりするので、VBA実行状況用のシートを作っておくっていうのもありかもしれませんね。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

確実に仕分ける方法としては、そういう行動を起こすVBAのプログラムの中でapplication.enableeventsをfalseにしておいてすれば、所定のイベントが起きれば手動起因、そうでないならVBAが起因です。