VBA、APIDoEvents関数は、プログラムで占有していた制御をOSに一時的に渡すための関数です。時間のかかる処理を途中で中止できるようにする方法」を参照してください)。DoEvents関数を用いると、Windowsのイベントキューの内容を調べるためのオーバーヘッドによって極端にパフォーマンスが低下します。ループ処理を途中でキャンセルできる機能よりもその処理時間を優先させたい場合には、DoEvents関数は使わない方が無難です。WindowsAPIの「GetInputState」関数を使うと、DoEvents関数を使わないのと同じ程度までパフォーマンスを改善することができます。DoEvents関数は完全にOSに制御を渡してしまいますが、GetInputState関数はイベントキューに待機中のイベントがあるかないかだけを調べます。これを利用すれば、イベントが発生しているときだけOSに制御を渡すことによって余分なイベント確認処理をしないで済むわけです。GetInputState関数はAPI関数ですので、プログラム中でこれを使うためには、標準モジュールの"Declarations"セクションに次の宣言を追加します。先頭に"Private"を付ければ、特定のフォームモジュール内でも宣言可能です。Longそして、ループ処理の部分を次のようにします。|この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。