• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのキー入力待ちでCPU負荷大)

VBAのキー入力待ちでCPU負荷大

このQ&Aのポイント
  • 問題のあるVBAプログラムのキー入力待ちで高いCPU負荷を解消する方法を教えてください。
  • Excel2010で動作するVBAプログラムのキー入力待ちでCPUの負荷が大きくなってしまいます。どのように改善すればいいのでしょうか。
  • VBAのプログラムでキー入力を待機する際、CPUの負荷が上がりすぎてしまいます。どのようにすれば負荷を下げることができるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。夕食前にそさくさと投稿しましたので... 少々古い記事ですが、参考URLがご参考になるかと。 今回の事案に当てはめると、 「人間様が、1msecキーを押して戻すなんて事は考え難いので、CPUの能力一杯にブン回す必要はなく、10msecずつ途中でお休みしても問題なく検知できるでしょう」という事になるかと思います。非常に素早い人にも対応したければ、数msecにしても十分効果はある様です。

参考URL:
http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_14364_0.html
gosyo0
質問者

お礼

そうなんですね。 それだけでそんなに変わるとは知りませんでした。 その後いろいろ調べてみたのですが今回の私のプログラムの場合 GetAsyncKeyStateではなくてもOnkeyで行けるのかもしれません。 ほかにもキー入力待ちのソフトを使っているので両者の特徴を見て mitarashiさんのアドバイスを取り入れてみます。 ありがとうございました。

その他の回答 (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

関連するQ&A