- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのキー入力待ちでCPU負荷大)
VBAのキー入力待ちでCPU負荷大
このQ&Aのポイント
- 問題のあるVBAプログラムのキー入力待ちで高いCPU負荷を解消する方法を教えてください。
- Excel2010で動作するVBAプログラムのキー入力待ちでCPUの負荷が大きくなってしまいます。どのように改善すればいいのでしょうか。
- VBAのプログラムでキー入力を待機する際、CPUの負荷が上がりすぎてしまいます。どのようにすれば負荷を下げることができるでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。夕食前にそさくさと投稿しましたので... 少々古い記事ですが、参考URLがご参考になるかと。 今回の事案に当てはめると、 「人間様が、1msecキーを押して戻すなんて事は考え難いので、CPUの能力一杯にブン回す必要はなく、10msecずつ途中でお休みしても問題なく検知できるでしょう」という事になるかと思います。非常に素早い人にも対応したければ、数msecにしても十分効果はある様です。
その他の回答 (1)
- mitarashi
- ベストアンサー率59% (574/965)
回答No.1
別の質問のために書いてみたのですが、下記Sleep10を入れないとCPUの使用率は100%になりますが、入れると1~2%程度におさまります。ご参考まで。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long Sub test() Do Range("A1").Value = Range("A1").Value + 1 If GetAsyncKeyState(32) Then Exit Do Sleep 10 DoEvents Loop End Sub
お礼
そうなんですね。 それだけでそんなに変わるとは知りませんでした。 その後いろいろ調べてみたのですが今回の私のプログラムの場合 GetAsyncKeyStateではなくてもOnkeyで行けるのかもしれません。 ほかにもキー入力待ちのソフトを使っているので両者の特徴を見て mitarashiさんのアドバイスを取り入れてみます。 ありがとうございました。