質問: excelのセル変化イベント excel2000及びexcel2010で動作させるvbaマクロを作成しております。 シート上にコマンドボタン配置し、データチェックを行うマクロを登録してあります。 任意のセルにデータを入力し、コマンドボタンを押下することで マクロが実行され、セルの内容をチェックし、不正があればセルを赤くします。 また新たにセルに値が入力されたときにはセルを白くしています。 ※セルに値が入ったことを認識するためにworkbook_sheetselectionchangeのイベントを利用しています。 基本的には問題なく動作するのですが、 下記の場合、excel2000と2010で動作が異なって困っています。 ★手順 (1)任意のセルで”f2"キーを押下し、編集状態とする。 (2)そのままの状態でデータチェックのコマンドボタンを押下する。 【excel2000の場合】 コマンドボタンが押せない。 【excel2010の場合】 コマンドボタンが押せる。 このとき、データチェックのマクロがまず実行され、 セルの内容に不正がある場合は赤くなるが、 直後にworkbook_sheetselectionchangeイベントが発生し、 「新しい入力」と判断してセルがすぐに白くなってしまう。 =>一瞬セルが赤くなるがすぐに白くなる。 なんとかexcel2000と2010とで動作内容を合わせたいのです。 そこで、コマンドボタンが押下されたとき、 編集中のセルが存在すればマクロは実行しない・・・という方法を考えましたが、 「セルが編集中」であるかはどのようにして判断すればよいでしょうか?
回答: 2010を持ってないので、試せないんですが。アイディア程度に... ツールバーの使用可否チェックしたら出来ないかなと@下記参照(お仲間ですか?) http://questionbox.jp.msn.com/qa6649067.html あと、先にイベント処理しちゃう手もあるんじゃ?挙動は同じにならないですが... selection.offset(1,0).select 'もしかしたらココでchangeイベント発生 doevents 'selectで発生しないなら、コチラで呼び出し