- 締切済み
ExcelVBA application.wait
いつも参考にさせていただいております。 Excel 2010を使っています。 あるセルをクリックすると、そのセル内容を他のセルに表示する機能を実装しています。この動作自体には問題はないのですが、セルをクリックして他のセルに表示した後、少しの間は次のセルをクリックできないようにしたいのです。 そこで、application.waitを使ってみました。waitが掛かっている間は、マウスカーソルが砂時計になって一見操作できないようですが、砂時計の間にクリックしたセルが、待ち時間が終了した瞬間に受付される(つまり砂時計の間のクリックはキャンセルされておらず、時間切れを待っているだけ)ということがわかりました。 問題を解決するには、そもそもクリックでセルの値を読めないようにするか、Waitの時間切れのときに操作のバッファ?をクリアして「なかったことにする」かだと思います。なるべくシンプルに構成したいのですが、みなさまどのようにお考えになりますか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
回答No.1
>少しの間は次のセルをクリックできないようにしたいのです。 そういう場合は「お待ち下さい」と表示する、モーダルなユーザーフォームを一定時間だけ表示します。 モーダルなユーザーフォームを表示中は、エクセルのシートをアクティブに出来ない(クリックできない。触れない)ので、セルをクリック出来ません。
お礼
モーダルフォームを .show(modal)で表示してみましたが、背後にあるセルを選択できる状態でした。最前面にありながらアクティブではなくなる動作でした。従いまして、この方法では解決できませんでした。
補足
なるほど。自動消滅するモーダルダイアログをつくればいいですね。画面構成を変えられないので、透明な(または画面外に)モーダルを出すことは簡単でしょうか。