役に立ちそうもないTips移転版

俺得なTipsを書き連ねるだけのブログ。

Excel: 幽霊ブレークポイント

Excel2007でVBAをキックすると、突然「コードの実行が中断されました」とダイアログが出て実際実行中断状況になる。
状態としては、コードにブレークポイントを設定してあって引っかかったか、Esc/Ctrl+Breakで実行を止めたときと同様。
しかし問題の個所にブレークポイントなど金輪際設定したことはなく、実行中キーボードには触れてもいない。

……という奇怪な現象。「継続」をクリックすれば動き出すのだが、やっかいなことにループの中や末端(Next文とかLoop文とか)で発生してくれやがることが多くAlt+C押しっぱなしにしないとひたすら止められる。
さらに厄介なことに一度これが出るとコードの別の個所でも同じ症状が頻発しだし、何やっても止められる状況にorz
あともう一つ厄介なのが、これ緊急に直したいバグ取った直後によく出るorz (これは気のせいかもしれないが……ただ、出るときは半月もコードをいじってないのに出たりもする)

この話はぐぐるとちょこちょこ見つかるのだが結局どこでもすっきり解決していないorz
今までのところ、効かなかった策は
・適当にブレークポイントを張り、「すべてのブレークポイントを解除」する
・ブックを作り直す
Excelを再起動

効いた策は
・Application.EnableCancelKey = xlDisabled
 ただし、この設定はプロシージャ単位でしか有効にならないらしいので、ぶっちゃけ全プロシージャの頭に仕込む必要がorz
 (どこで止まるか全く予測がつかんのだもんなあ……)
 あとうっかり無限ループ作ってしまったらtaskkillするっきゃなくなるorz
OSごと再起動
 Excelだけ何度再起動してもだめなんだこれが。ほかにいろいろWebで調べ物してたときなどはダメージ半端ないorz

……つらつら考えるに、「OSごと落とさないと直らない」というのは、アプリのキャッシュ処理とExcelの不具合が悪夢のコラボレーションしとるのでなかろうか。
(不具合の起きる状況がキャッシュされてしまうため、Excelを再起動したつもりがキャッシュから不具合が復活してしまう?)

2013/03/21 追記:
 OS再起動でなくログオフ→ログオンでも解消したかもしれない。

2013/11/14 追記:
 今日も昼過ぎになって出やがったので泣く泣く全アプリ落としてログオフの憂き目にあったのだが。
 何の気なしに「幽霊ブレークポイント」と名付けたけど、ふと思いついてぐぐってみるとどうやら英語圏の人は"Phantom breakpoints"と呼んでるようだ。
 ……で、肝心の解決法はというと、結局「全てのブレークポイント解除(Ctrl-Shift-F9)でなおった!」とか「サードパーティーのコードクリーニングツールでなおった!」なんて話もあるがとりあえず前者では治らんぞとorz

2014/04/16 追記:
http://d.hatena.ne.jp/rizenback000/20110926
こんな記事を発見。「デバッグリセット」ってなんだっけ、と首をひねったが停止ボタン(とわちきは呼んでいた)が「リセット」なのか。
で、今日も発生したんで試してみたところ解消。∩( ・ω・)∩ばんじゃーい
(念のため対処法を簡単に転記。止められたら「デバッグ」クリックでVBEを開き、今一度Ctrl+Break押してから、Ctrlキー押しつつデバッグツールバーの「リセット」をクリック。
そこでコードは実行停止するので必要なら最初から再実行。)