こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ExcelVBA application.wait

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

問題を解決するには、そもそもクリックでセルの値を読めないようにするか、Waitの時間切れのときに操作のバッファ?をクリアして「なかったことにする」かだと思います。なるべくシンプルに構成したいのですが、みなさまどのようにお考えになりますか?

投稿日時 - 2018-01-31 11:29:22

QNo.9424148

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

>少しの間は次のセルをクリックできないようにしたいのです。

そういう場合は「お待ち下さい」と表示する、モーダルなユーザーフォームを一定時間だけ表示します。

モーダルなユーザーフォームを表示中は、エクセルのシートをアクティブに出来ない(クリックできない。触れない)ので、セルをクリック出来ません。

投稿日時 - 2018-01-31 11:45:51

補足

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

投稿日時 - 2018-01-31 12:31:48

お礼

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

投稿日時 - 2018-02-06 16:21:05

あなたにオススメの質問