すみません、お手数ですが教えて頂きたく宜しくお願い致します。

現在、以下のマクロにて前もって決められたデータを下回った時、または右クリックにて処理を中断(または終了)するように作成したのですが、思わぬエラーがでてきました。
エクセルを立ち上げ後(他の作業後も)、このマクロを始めて処理するときによく起こるのですが、キーやマウスを未操作にもかかわらず“中断しました”の処理でマクロを終了してしまいます。
どこに問題点があるのでしょうか? 皆目分からない為宜しくお願い致します。
Sub 連続処理()
For I = 1 To 10
If 色別.Value = 下限 Then MsgBox "データ下限です。終了します。": Exit Sub
ActiveWindow.SmallScroll Down:=1
If GetAsyncKeyState(2) <> 0 Then MsgBox "中断しました": Exit Sub
Call E_DOWN_DAY
Next
End Sub

回答の条件
  • 1人10回まで
  • 50 ptで終了
  • 登録:
  • 終了:2008/01/05 14:48:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

すべて
戻り値の勘違い =や=2008/01/04 00:58:43ポイント2pt

こんにちは。

GetAsyncKeyStateの戻り値について勘違いされているのが原因だと思います。

仮想キーが押されているかどうかの判断は最上位ビットを確認する必要がありますので、キーの判断を以下のようにすることで解決すると思います。

If GetAsyncKeyState(2) = "&H8000" Then MsgBox "中断しました": Exit Sub

戻り値については以下のサイトをご覧ください。

GetAsyncKeyState

御回答ありがとうございます。 dadan_dan2008/01/05 06:32:43

 最初の問題は解決したみたいなのですが、違う問題が出てきました。教えて頂けると幸いです。

どこかのサイトページにてマクロの“処理中に中断”させる処理が記載されていまして、

そのまま GetAsyncKeyState(2) <> 0 にしました。

 教えて頂きました形に変更すると“中断”が出来なくなってしまいました。

どの様にすれば解決するのでしょうか。お手数ですが宜しくお願い致します。

マクロの強制的な中断? =や=2008/01/05 11:01:58ポイント1pt

マクロの強制的な中断であれば、Ctrlキーを押しながらBreakを押すと中断することができます。

プログラム中の処理として中断するのであれば、中断用のキーを決めてマウスの右クリック処理と同じような処理にすればOKだと思います。

すべて

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません