• ベストアンサー

EXCEL-VBAでキー入力で処理を分岐させたいのですが・・・

長い処理を繰り返すプログラムを使っています。 ESCキーを押すと処理が止まりますが、どこで止まるか決まってないので困ります。 プログラムの実行中に、キー又はマウスの操作を変数に取り込み、処理を分岐し終了処理をさせたいのですが、その方法があったら、教えてください。

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

  • ベストアンサー
回答No.2

これじゃあ、ダメかな? ESCキーを押すと"ESCが押されました"というメッセージが表示される。 -------------------------------------------------- Sub a() Dim i As Long ' エラー処理を登録 On Error GoTo ERR1 ' ESCキーでエラー処理に進む Application.EnableCancelKey = xlErrorHandler For i = 1 To 60000 Cells(i, 1).Select Next i GoTo EXIT1 ' エラー処理 ERR1: MsgBox "ESCが押されました" ' 終了処理 EXIT1: ' セットしたプロパティを初期値に戻す Application.EnableCancelKey = xlInterrupt Application.StatusBar = False End Sub -------------------------------------------------- これを色々応用すれば、何とかESCキーで分岐は出来そうですが。

oyaji-2
質問者

お礼

ありがとうございます。ERR1:の中でフラグを立て、RESUMEで元の処理に戻し、分岐させたいところでフラグを見て分岐させればできそうな気がします、試してみます。どうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • merys
  • ベストアンサー率25% (1/4)
回答No.3

どのような処理をしているのかわからないのですが、MsgBox関数を使って終了するか、続けるかを選択するというのはだめでしょうか? If MsgBox("end?", vbOKCancel) = vbOK Then '処理を終了する End If 分岐点に↑のような記述をするとか。 メッセージボックスが現れて、OK、キャンセルボタンをクリックすることで処理の流れを変えられますよ。 そういうことじゃないんだよ、ということでしたらごめんなさい。

oyaji-2
質問者

お礼

普通はずーと処理を続けていて「止めたいな」と思った時にマウス操作をして止める、それもどこでも良いわけでは無く、丁度良い処理の切れ目で分岐してから終了の処理をして止めたい、という横着者の質問ですなんです。ご回答ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.1

ダミーで良いですから、適当なユーザーフォームを作くり、それを表示した状態で、目的の処理をすれば、マウスのダブルクリックや、ユーザーフォーム上をクリックするなどの操作による、イベントドリブンなプログラムを書けます。 例えば、ユーザーフォーム上をクリックして場合は、下記のサブプロシージャーが実行されますので、この中に処理を終わらせる記述が出来ます。 Private Sub UserForm_Click() End Sub

oyaji-2
質問者

お礼

ありがとうございます。試してみます。

すると、全ての回答が全文表示されます。

関連するQ&A