- ベストアンサー
Win98 + Excel97 + VB での無限ループの強制終了
表題の件なのですが、 例えばエクセルシートの適当な位置にボタンを配し、以下のようなソースを組んだとします。 Private Sub CommandButton1_Click() s=0 Do While (s<15) s = s + 1 Loop End Sub もしも誤って s=s+1の行をコメントにしたら無限ループとなり エクセル及びVBが【実行中】のまま固まってしまいますよね? この場合「タスクマネージャ」を使って強制終了しています。 当然エクセルもVBもタスクから消滅してしまいます。 ファイルを保存していない時にこの状態になるとかなりブルーです。 作成途中のプログラムを残せるようなプログラムのみ終了させる方法 または 無限ループ内に「ループから強制的に抜け出すようなアクション」の埋め込み方法(または以下の意味は解りますかね…(汗)) 等、ありましたら回答よろしくお願いします。 それともこのような状態になったら「ソースを作ったあなたが悪い!最終保存以降の編集内容はあきらめよ」と言うことなんでしょうか? ちなみに論点はForNext等への変更ではなく あくまで「誤って表記してしまった無限ループからの脱出」です よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私は、VB環境しかつかったことが無く、Excel97などのVBA環境は使ったことがありませんので、回答になるか自信がありませんが、参考になれば。 VBであれば、「ctrl」キーと「break」キーを押すことで、VB上で実行中のプログラムを中断することができます。 無限ループ中でも中断してくれたと思います。
その他の回答 (3)
- gonta_goma
- ベストアンサー率50% (37/73)
「ESC」キーを押せばプログラムは終了すると思います。
お礼
回答ありがとうございます! これです!!! 「ESC」!一発で解決しました!! 15年前にN88-BASIC を使っていた頃(PC-88の)キーボードを思い出せば左上[STOP] から、左上を疑うべきでしたっけ…あれ?STOPは右上でしたっけ…? とにかく助かりました。ありがとうございました。
- ponpon
- ベストアンサー率19% (67/345)
実行する際、ホンモノじゃなくてコピーを作成して使う、とか…
お礼
回答ありがとうございます。 No4のお礼の後で恐縮です。 実行する際、コピーを作る手間は…「あらかじめ保存しておけ!」ですよね…
- zerosix
- ベストアンサー率31% (47/149)
WinNT(or2K)で開発すればいいんじゃないですか。 そうすれば、タスクマネージャで死んだアプリを制御できます。
お礼
回答ありがとうございます。 開発環境はWindows2000でした。こちらのミスです。 タスクマネージャが起動する98って(大汗)失礼しました。
お礼
早速の回答ありがとうございます。 今年に入りVBを学習(と言ってもVBAのみですけど)しつつソース作りです。 N88-BASICは触れていたおかげでほとんど不自由はしていません。 No4から若い数字方向へのレスで恐縮ですがCtrl+Breakでも停止しました。 ありがとうございます。