• ベストアンサー

VBA エラー時に中断できず停止になります

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。  環境:Win7 Home 64Bit      Excel2010 でございます。  VBA実行中にエラーが表示された際、Ctrl+Breakキーを押しますと「一時中断」モード(エラー行が黄色になって、その時点での個々の変数に入っている値が調べられる状況)になると思うのですが、 今は、「型が一致しません。」後にCtrl+Breakキーを押しますと何故か「停止」モードになってしまい、デバッグが出来ず困っております。  何処かに設定や何らかの回避策などあるものなのでございましょうか? もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

Forループ内200行といっても、何らかの処理単位かあるはず。 Ctrl+Gキーでイミディエイトウインドウ出しておいて、 上記処理単位に、Forループの添字と処理名をDebug.Printで表示させる。 これは「どこまでは処理されてるか」を表示して、コケるところを絞り込むため。 何度か繰り返しての調整が必要です。 「そもそも」はよくわかりません。 breakさせて表示>呼び出し履歴 見たとき(見れたとき)に 「非VisualBasicコード」と出てたり 対象のオブジェクトを消してたりかも。

MKT_
質問者

お礼

 bin-chan様 どうもありがとうございます! >Ctrl+Gキーでイミディエイトウインドウ出しておいて、 >Debug.Printで表示させる。 存じませんでした!m(_ _)m 便利ですね(・v・)いつも不要なセル上に進捗状況を表示させておりましたのでVBAの動作が非常に重くなっていたのですが、今後この方法を使わせていただきます。  犯人を特定いたしましたのでご報告させていただきます。    If 日付 - 前の日 > 1 Then に対して、    Debug.Print (日付 & "_" & 前の日) をイミディエイトウィンドウに出しましたところ、 2011/06/21_2011/06/20 2011/06/22_2011/06/21 2011/6/23_2011/06/22 ←ここでエラーが出ておりました。 (日付に0が有る文字列と無いものとでは計算が出来ないのでございますね。。。orz)  誠にありがとうございました!!m(_ _)m しかし「そもそも」何故このような【「デバッグ」ボタンのないエラーメッセージ】が出てくるのかの原因は未だに闇の中でございますが。。。。

その他の回答 (4)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.5

>>ANo.3 確認したつもりが、ちゃんと更新できてなかったようで。回答かぶってすみません。 内容ほぼ一緒です。 処理にもよるので、問題箇所の特定は必要になるかと。

MKT_
質問者

お礼

どうもありがとうございます!たった今、 >コードコピーしてファイル作り直しも選択肢になるかと。 を実行してまいりました。シート全てとVBA全てを新しいファイル上にコピペしまして、問題のVBAを同様に実行いたしましたところ、同じ現象になりました。。。orz 一体この不便なメッセージはなんなのでございましょう(@@  しかし、エラーメッセージが複数ある、という事が分かりましたので非常に助かりましたm(_ _)m

MKT_
質問者

補足

 この度はご親切に誠にありがとうございましたm(_ _)m BAで悩みまして、先にDebag.Printをお教えいただきましたNo.3のご回答をBAにさせていただきますが、今後ももしお見かけいただきましたら是非ともアドバイスしていただけたらと思います。どうもありがとうございました!!^^

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.4

Ctrl+Breakが効かないだけなら、Application.EnableCancelKey = 0なんてのもありますが、処理内で設定しない限り、デフォルトは1なので、自作のコードなら問題ないと思います。 エラーダイアログも違うみたいですし・・・ 通常、VBAのエラーだと、こーいうウィンドウがでます↓ http://officetanaka.net/excel/vba/error/execution_error/error_13.htm デバッグボタンがないとのことなので、コレとは違うのが出てるんだと思います。もしかして、ライブラリやら何かCreateObjectしてるとかで、外部でエラーが起きているのかな。。 いずれにせよ、設定で直るモノじゃなさそーに思います。 とりあえず、他のエラーで中断できるコトだけ確認した上(※)で、問題箇所の特定でしょうか。 Debug.Print でイミディエイトウィンドウにログを出力すれば、処理がどこまで進んでいるか、絞り込んでいけると思います。 ※もしコレが中断できないよーなら、ファイルが壊れてる(?)可能性を考えて、コードコピーしてファイル作り直しも選択肢になるかと。 Sub hoge() Dim n& n = "x" '←エラー発生 End Sub

MKT_
質問者

お礼

 ap_2様  どうもありがとうございます!m(_ _)m >通常、VBAのエラーだと、こーいうウィンドウがでます↓ >http://officetanaka.net/excel/vba/error/execution_error/error_13.htm  今↑のリンクを見させて頂いて、普段はそのようなエラーメッセージだったように感じております。私の現在の環境では何故か、 https://www.google.co.jp/search?safe=off&biw=1920&bih=943&tbm=isch&sa=1&q=%E3%82%A8%E3%83%A9%E3%83%BC13%E3%80%80%E5%9E%8B%E3%81%8C%E4%B8%80%E8%87%B4%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93&oq=%E3%82%A8%E3%83%A9%E3%83%BC13%E3%80%80%E5%9E%8B%E3%81%8C%E4%B8%80%E8%87%B4%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93&gs_l=img.3..0i24.237711.237789.0.238181.2.2.0.0.0.0.111.184.1j1.2.0....0...1c.1j4.40.img..1.1.111.3kC8-SoD8zU の3段目にございます【「OK」と「ヘルプ」しかないメッセージ】が出てきております。 >Sub hoge() >Dim n& >n = "x" '←エラー発生 >End Sub を試して参りましたが、同じ形式のエラーメッセージが表示されましたorz >コードコピーしてファイル作り直しも選択肢になるかと。 はい、そのようにしてみます。今思いましたが、ファイルサイズが20MBある大容量ファイルでございますので、ひょっとするとそれも関係しているのでしょうか。。。 >Debug.Print でイミディエイトウィンドウにログを出力すれば、処理がどこまで進んでいるか、絞り込んでいけると思います。  はい、この方法を存じませんでした。誠にありがとうございます。No.3様からいただいた同じアドバイスの解答欄に結果をご報告させていただきました。  ご親切に誠にありがとうございました!!!m(_ _)m

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.2

エラー発生時はCtrl+Breakではなく、エラーメッセージに「デバッグ」ボタンで中断かと思うんですが・・・ プロジェクトがロックされているなんてコトは? Alt+F11でVBEを開いて、コードを表示できるか確認してみてください。

MKT_
質問者

お礼

 ap_2様  どうもありがとうございます!! エラーのメッセージボックスが最前面にされている為、VBE上の一時停止ボタンを押せない状態でございます。(メッセージボックスには「OK」「ヘルプ」のボタンがあり、「OK」を押すとマクロ停止状態になってしまいます。)  プロジェクトの中身は見えている状態でございます。パスワードは設定しておりません。どうもありがとうございました!

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

「その行」は特定できているのですか? 特定できているなら「その行」の直前に STOP 書くとか、F9キーでブレーク行設定するとか。

MKT_
質問者

お礼

 bin-chan様  どうもありがとうございます!m(_ _)m For~Nextループの中でございます。200行程度を1000回以上繰り返す部分でございますので、特定が困難な状態でございます。。。orz  そもそも何故、「一時停止」にならず「停止」になるのでございましょうか。。。(?)

関連するQ&A