人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

すみません、お手数ですが教えて頂きたく宜しくお願い致します。
現在、以下のマクロにて前もって決められたデータを下回った時、または右クリックにて処理を中断(または終了)するように作成したのですが、思わぬエラーがでてきました。
エクセルを立ち上げ後(他の作業後も)、このマクロを始めて処理するときによく起こるのですが、キーやマウスを未操作にもかかわらず“中断しました”の処理でマクロを終了してしまいます。
どこに問題点があるのでしょうか? 皆目分からない為宜しくお願い致します。
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

●質問者: dadan_dan
●カテゴリ:コンピュータ
✍キーワード:EXIT NeXT sub すみません エクセル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

[1]戻り値の勘違い guribow

こんにちは。

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

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

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

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

GetAsyncKeyState


[2]>1 御回答ありがとうございます。 dadan_dan

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

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

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

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

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


[3]>2 マクロの強制的な中断? guribow

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ