• 締切済み

ExcelVBA application.wait

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

みんなの回答

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.1

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

minis8566
質問者

お礼

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

minis8566
質問者

補足

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

関連するQ&A

  • Waitの置き方

    Visual Basicでコマンドとコマンドの間に時間を置くやり方を教えてください。例えば Private Command1_Click()   Call Comand2_Click   '-----ここに2秒間のWaitを置いて次の処理に行く。   Call Command3_Click End Sub このような感じで、コマンドとコマンドの間にきっちり2秒の時間をおきたいのですが、どのようにやったらいいのですか?誰か教えてください。

  • エクセルVBAのApplication.Wait Now()について

    皆様こんにちは 温度計を導入しまして、リアルタイムに温度を取り込むアドインがついていました。いまsheet1のA1からG1まで次々値が変化するセルがあります。 そこで10秒おきにA1からG1までの値だけを2列下にコピーするコードを実行してみたのですが・・・ '----------------------------- Sub 一定秒おきに実行() Dim i As Integer Static k For i = 1 To 5 If k = "" Then k = 2 Application.Wait Now() + TimeValue("00:00:01") DoEvents 下に数値のみを貼り付ける Next End Sub '--------------------------------------- Sub 下に数値のみを貼り付ける() Range("A1:G1").Select Selection.Copy Range("A3:G3").Select Selection.PasteSpecial Paste:=xlPasteValues End Sub '-------------------------------------- その結果 Sub 下に数値のみを貼り付ける()をVBエディタの標準ツールバーの実行をクリックするたびにリアルタイムに値がコピーされるのですが、Sub 一定秒おきに実行()を実行すると、画面が5回ちらつくのでコピーはされてるみたいですがマウスポインタが砂時計になって、その間アドインからの数値の更新も止まってしまいます。 Application.Wait だけにマクロが停止していると思いますが、これには大変困ってしまっています。 マクロをとめないで一定時間置きに "Sub 下に数値のみを貼り付ける()"を実行する方法はないでしょうか。 よろしくお願いします。

  • 起動時間が・・・

    XPにアップグレードして起動時間が早くなると思ったのですが、アイコンとかがすべて表示されてから1分ぐらい操作ができません。これが普通なのでしょうか?その1分間の間にカーソルを下のタスクバーに持っていくと砂時計が出ます。電源ONから操作が出来るまでの時間は大体1分30秒くらいです。

  • エクセルVBAで仕事をさせながら、他のエクセルの仕事をしたい

    30分くらいかかるエクセルのプログラムをさせていると、その間砂時計が出てきて、他の仕事が出来なくなります。 砂時計を消して、カーソルも自由に動くようにして、他の仕事をしたいのですが、どのようにプログラムを変えたら良いのでしょうか? ご存知の方、教えていただければ幸いです。

  • アプリケーションが今朝から起動しなくなりました

    教えてください。 昨日までは、軽やかにとは申しませんが、WindowsXPが正常に起動してデスクトップにあるアイコンをダブルクリックしても砂時計が出たまま起動しなくなりました。 確かに、兆候として?起動時間(反応)が鈍くなってきていたのは確かですが、今朝、PCを起動して作業に取り掛かろうとしたら砂時計が出たまま駄目でした。フリーズ状態になってはいないと思います。スタートボタンをクリックして正常にシャットダウンは出来ました。 他の方々の質問も一読してみましたが、スタートアップのアプリケーションの辺りから検証すべきでしょうか。 CPU回りの埃の掃除なども考えられますか? よろしくお願いします。

  • 動作が鈍くなってしまった

    会社のパソコン(Win2000)が私のだけ動作が遅くなってしまいました。 フォルダやファイルを開くと普段はすぐに砂時計のマークが出て起動するのですが、私のパソコンだけがクリックしても砂時計が出ずに待ち時間も長く、後から砂時計が出てきて起動するような感じです。(砂時計が出ない間の操作は何もできません) 私用のパソコンではないので、そんなにアプリケーションは入っていません。 ウイルスも発見しませんでした。 メモリは128Mです。 タスクマネージャを見てもいまいち良くわかりません。 物理メモリの合計が129008 利用可能が49128    システムキャッシュが82656です。 フォルダが開くまでの待ち時間をなんとかしたいので宜しくお願いします。

  • VC 砂時計表示

    ボタンが押された後、特定の関数を実行している間、 マウスカーソルを砂時計表示にしたいです。 条件としてはFMCは禁止とされています。 いろいろ探してみましたが、BeginWaitCursor()は MFCと思われます。 MFC以外で砂時計表示をすることはできないのでしょうか。 どなたか分かる方、ご助言いただきたく存じます。 何卒、お願いいたします。

  • 実家のパソコンの「スタート」ボタンを押せない

    実家にあるデスクトップのパソコン(FMVでWindows XPです)の、スタートボタンが押せなくなってしまいました。 「スタート」ボタンにカーソルを合わせると、ずっと砂時計マークが出ていて、全然押せません。 砂時計がずっと出たままなので、「スタート」ボタンからシャットダウンを選ぶことができず、 本体の電源ボタンを押して消すしかありません。 スタートボタンからカーソルをはずすと砂時計は消えますが、デスクトップ画面に表示されているソフトやファイルも開けない状態です。 デスクトップ画面にあるソフトやファイルは、ワンクリックで開ける設定になっています。 いつもはソフトやファイルにカーソルを合わせると矢印マークが手のような形のマークに変わるのですが、今はカーソルを合わせても矢印マークのままで、クリックしても何も反応がありません(開きません)。 ですので、パソコンを立ち上げても何も使えない状態です。 どのようにすれば直りますでしょうか? 業者に直してもらう時間がないかもしれないので、自分で直せる方法を知りたいです。 わかる方がいらしたら教えてください。 何卒よろしくお願いします。

  • 【javascript クロスブラウザ】処理中はカーソルを砂時計にしたい

    漠然とした言い方ですが、javascript実行中はカーソルを砂時計にしたいです。 すごく具体的な例を示すと、new Ajax.Request実行直前にカーソルを 砂時計に、onSuccessに指定したfancitonの最後でカーソルを デフォルトに戻したいです。 基本的な動作を検証するhtmlを書いてみました。 <html> <head> <style> <!-- div { height: 100%; width: 100%; } --> </style> <script type="text/javascript"><!-- function pleaseWait(){ document.body.style.cursor = 'wait'; setTimeout(function(){document.body.style.cursor = 'default';},2000); } //--></script> <head/> <body> <div onmousedown="pleaseWait();"> </div> </body> </html> windows環境で、IE6,FireFox3,Opera9,Safari(3.2.1),Google Chrome で試してみました。ブラウザ毎の結果を以下に記します。 ■IE,FireFox クリック後、2秒間は砂時計のカーソルになり、 その後元に戻りました。(これが期待している動作です。) ■Opera なんの反応もありませんでした。 ■Safari,Google Chrome クリック後、砂時計になり、マウスを動かさなければ砂時計のまま。 マウスを動かせば、元に戻る。 opera,Safariでも期待した結果を得るにはどうしたら良いでしょうか? 名案ありましたら教えてください。

  • アプリケーションが起動しなくなる

    10日程前、ネットで東芝FMV6667CX6cを中古でを購入致しました。 WindowsXPがのせてありました。 実家の両親がインターネットとメール、ソリティアをする為だけに使用しています。 プロバイダは地元ケーブルテレビで、有線で使用しています。 メモリは、128MBだったので私が256MBを差し込んで増やしました。 今の状態ですが、 1.サクサクの時もあれば、時々アプリケーションソフトが立ち上がらなくなります。ソリティアやInternet explorerなど、ダブルクリックでもシングルクリック→ENTERしても駄目です。 いったん、砂時計が出ますがその後 矢印に戻ってしまいます。 それは、コントロールパネルを出す時も同じように、 いったん砂時計が出ますが、その後何事もなかったように動かなくなります。ダブルクリックがききません。 2.ネットでも同じです。動かなくなります。 スクロールキーがきかなくなる上、キーボードの矢印キーもきかなくなります。 ログイン画面などは文字も打てなくなり、カーソルが動かなくなります。 3.終了しようにもスタートボタンも押された状態のまま 動かなくなります。 4.何分か待っていると急に今までの操作がすごい勢いで 始まり、終了してしまいます。 5.OSは普通に立ち上がります。 6.インストールしてあるのは、OSとflashだけで、 後でインストールしたExcel、Wordも削除しました。 Windowsのおまけアプリケーションもできる限り削除してあります。 どうしたらいいでしょうか? 素人考えでは接触不良かな?って思うくらい、サクサク動く時もしゅちゅうです。 よろしくお願い致します。

専門家に質問してみよう