• 締切
  • すぐに回答を!

ExcelVBA application.wait

  • 質問No.9424148
  • 閲覧数185
  • ありがとう数1
  • 回答数1

お礼率 46% (27/58)

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

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

回答 (全1件)

  • 回答No.1

ベストアンサー率 43% (7609/17468)

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

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

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

お礼率 46% (27/58)

なるほど。自動消滅するモーダルダイアログをつくればいいですね。画面構成を変えられないので、透明な(または画面外に)モーダルを出すことは簡単でしょうか。
投稿日時:2018/01/31 12:31
お礼コメント
minis8566

お礼率 46% (27/58)

モーダルフォームを .show(modal)で表示してみましたが、背後にあるセルを選択できる状態でした。最前面にありながらアクティブではなくなる動作でした。従いまして、この方法では解決できませんでした。
投稿日時:2018/02/06 16:21
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ