♯untitled_note

私的な考えとかメモ、その他トラブルシュート

ExcelVBAにおける不可解な「コードの実行が中断されました」

復帰方法確定? (追記:2013/02/18)

再現したので、復帰方法手順5をいきなり試してみた 結果改善。
「Ctrlを押しながら、デバッグリセット」が効いてる気がします。
同症状になった方は是非お試しください。

再現した時「なんだこれ…」と想いながらググって自分のブログがヒットした時の衝撃*1

不可解な「コードの実行が中断されました」

マクロを組んでデバッグ中、突然何の変哲もないところで「コードの実行が中断されました」メッセージが出た。
調べてみると、全く同じ現象はあり改善策を提示されてはいるものの、改善報告は全くない。

CGI Error

どうやらバージョンに依存せず発生するようだが、念のためバージョンを記載しておく。
現象発生Excelバージョン:Office 2007

現象発生前に実施していたこと

  • #if #end ifを適当に使っていた。
  • ループ中の箇所で適当にCtrl+Breakしていた。

復帰方法

確実性は不明。同現象が出ている方がいるようなら、是非試して結果をコメントして欲しい。
この件は直し方も、発生のさせ方も判明していないようです。


1.実行する→コードの実行が中断される→デバッグ押してコードウィンドウ表示
2.メニューバーよりデバッグ→全てのブレークポイントの解除実施
デバッグ中断して再度実行するも改善されず。

3.上記1〜2を実行。Stopしている行にブレークポイント設定→デバッグ中断して再度実行する
ブレークポイントでStopした時点で、全てのブレークポイント解除実施*2
デバッグ中断して再度実行するも改善されず。

4.フォルダ選択時に、処理に必要なファイルが含まれていないフォルダを開く。
⇒なぜかブレークされず処理が一通り走る

5.(重要なところだが忘れた)フォルダ選択時に、処理に必要なファイルが含まれているフォルダを開く。
処理が止まった後にわざとCtrl+Breakを押下する。(動作的な動きはない)
Stopしている状態のまま、Ctrlを押しながら、デバッグリセットのボタンをクリックする
⇒再度実行して改善されている。


追記(2014/6/24):
このエントリを書くまでにやる必要がありそうなことは大体やった上で上の方法を試しています。*3
覚えてる限りで書けば以下の様なことをした気がします。手順1〜5でダメな人はまずは再起動からしてみると良いかもしれません。
  • 名前を付けて別のファイルとして保存
  • Excelの再起動
  • PCの再起動
  • マクロの削除/新規作成

サンプルコード

他の方の質問にはコードが全く載っていなかった為、私が発生した時のコードを残しておくことにする。
もしかするとみんなフォルダ選択ダイアログを使っていたりするのではないのか?

関連性は全くわからなかった。
Sub AAA
  With Application.FileDialog(msoFileDialogFolderPicker)
    .title = "ホゲホゲファイルのあるフォルダを指定してください"
    If .Show = True Then
      Dim i As Integer
      Dim fname As String
      Dim c As Collection
      
      i = 1  ★ここでブレイク★
      fname = .SelectedItems(1)
      Set c = GetAllFiles.GetFiles(fname)
      
      中略
      
      Do While i <= c.Count  ★ここでブレイク★
      
      中略

      Loop

  End With
End Sub

Sub BBB
  Dim r As New RegExp
  r.IgnoreCase = True  ★ここでブレイク★

  中略
  
End Sub

*1:忘れてた

*2:わざと1度問題のある箇所をブレークポイントに設定して、解除してみる戦法

*3:言わずもがな、全部治らなかったので腹立ちまぎれに変な手順で直しました