アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2000及びExcel2010で動作させるVBAマクロを作成しております。

シート上にコマンドボタン配置し、データチェックを行うマクロを登録してあります。

任意のセルにデータを入力し、コマンドボタンを押下することで
マクロが実行され、セルの内容をチェックし、不正があればセルを赤くします。
また新たにセルに値が入力されたときにはセルを白くしています。
※セルに値が入ったことを認識するためにWorkbook_SheetSelectionChangeのイベントを利用しています。

基本的には問題なく動作するのですが、
下記の場合、Excel2000と2010で動作が異なって困っています。

★手順
(1)任意のセルで”F2"キーを押下し、編集状態とする。
(2)そのままの状態でデータチェックのコマンドボタンを押下する。

【Excel2000の場合】
コマンドボタンが押せない。

【Excel2010の場合】
コマンドボタンが押せる。
このとき、データチェックのマクロがまず実行され、
セルの内容に不正がある場合は赤くなるが、
直後にWorkbook_SheetSelectionChangeイベントが発生し、
「新しい入力」と判断してセルがすぐに白くなってしまう。
=>一瞬セルが赤くなるがすぐに白くなる。


なんとかExcel2000と2010とで動作内容を合わせたいのです。

そこで、コマンドボタンが押下されたとき、
編集中のセルが存在すればマクロは実行しない・・・という方法を考えましたが、
「セルが編集中」であるかはどのようにして判断すればよいでしょうか?

A 回答 (1件)

2010を持ってないので、試せないんですが。

アイディア程度に…

ツールバーの使用可否チェックしたら出来ないかなと@下記参照(お仲間ですか?)
http://questionbox.jp.msn.com/qa6649067.html

あと、先にイベント処理しちゃう手もあるんじゃ?挙動は同じにならないですが…
 Selection.Offset(1,0).select 'もしかしたらココでChangeイベント発生
 DoEvents 'Selectで発生しないなら、コチラで呼び出し
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!