Excel VBAでプログラムを書いています。ループを使って処理を行っているのですが、例えばループが1000回まわった時に

変数にどんな値が入っているかというのを知りたいと思っています。またループが1000回まわった状態でステップインで
プログラムがどんな動きになるのか知りたいと思っています。

イミディエイトウィンドウを見て、ブレイクポイントを設定してステップインを1000回行えば解決するのはわかっていますが、
それだと非常に時間がかかります。ブレイクポイントを設定はしたいのですが、1000回ステップインをするのは面倒。
それを解決するための策はないんでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/10 10:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:m6u No.1

回答回数82ベストアンサー獲得回数6

ポイント60pt

 Visual Basic Editorのメニュー、デバッグ→ウォッチ式の追加、ってのを試してください。

 該当のSubもしくはFunctionで、ループカウンタがもしIで0からカウントするなら、式の欄に「I Mod 1000 = 999」として「式が True のとき中断」という条件を使えば、Iが999や1999や2999などの時に止めることができます。

 また、Debug.Printってのを使って、

If I Mod 1000 = 999 Then

Debug.Print "I = " & CStr(I) & ", X: " & X

End If

みたいにすることで、いちいち処理を止めずともイミディエイトウィンドウに出力されます。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 Gay_Yahng 724 660 26 2009-04-03 10:41:26
2 ku__ra__ge 118 75 40 2009-04-03 12:50:58
3 ふるるP 194 162 21 2009-04-03 16:28:07
4 ardarim 897 806 145 2009-04-04 13:25:31
  • id:Gay_Yahng
    あ、もう開かれていたんですね。私の回答もウォッチ式なので開かないでいいです。
  • id:SALINGER
    2007では知りませんが、2003ではイミディエイトウィンドウは200行までしか表示されないことを補足しておきます。
  • id:Mook
    気にしたことなかったので初めて知りましたが、2007でも200行までしか表示されませんでした。
    勉強になりました。


    処理量が多い場合も m6u さんのように出力頻度をさげるようにすれば、たいていのことは Debug.Print
    で事足りる気がします。

    ブレークポイントを使用するのであれば、面倒ですが
    If i=1000 Then
      Debug.Print i
    End If
    のような文をステップ実行したい直前においてIf文の中にブレークポイントを設定し、そこからステップ
    実行すれば1000回目のループをステップできます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません