• 締切済み

ExcelVBA application.wait

いつも参考にさせていただいております。 Excel 2010を使っています。 あるセルをクリックすると、そのセル内容を他のセルに表示する機能を実装しています。この動作自体には問題はないのですが、セルをクリックして他のセルに表示した後、少しの間は次のセルをクリックできないようにしたいのです。 そこで、application.waitを使ってみました。waitが掛かっている間は、マウスカーソルが砂時計になって一見操作できないようですが、砂時計の間にクリックしたセルが、待ち時間が終了した瞬間に受付される(つまり砂時計の間のクリックはキャンセルされておらず、時間切れを待っているだけ)ということがわかりました。 問題を解決するには、そもそもクリックでセルの値を読めないようにするか、Waitの時間切れのときに操作のバッファ?をクリアして「なかったことにする」かだと思います。なるべくシンプルに構成したいのですが、みなさまどのようにお考えになりますか?

みんなの回答

回答No.1

>少しの間は次のセルをクリックできないようにしたいのです。 そういう場合は「お待ち下さい」と表示する、モーダルなユーザーフォームを一定時間だけ表示します。 モーダルなユーザーフォームを表示中は、エクセルのシートをアクティブに出来ない(クリックできない。触れない)ので、セルをクリック出来ません。

minis8566
質問者

お礼

モーダルフォームを .show(modal)で表示してみましたが、背後にあるセルを選択できる状態でした。最前面にありながらアクティブではなくなる動作でした。従いまして、この方法では解決できませんでした。

minis8566
質問者

補足

なるほど。自動消滅するモーダルダイアログをつくればいいですね。画面構成を変えられないので、透明な(または画面外に)モーダルを出すことは簡単でしょうか。

関連するQ&A

専門家に質問してみよう