はじめに
ひらちんです。
今回は、マクロの実行を一時停止してデバッグモードにする方法を紹介します。
Stopステートメント
マクロを実行して、単に指定の場所で止めるためには”Stop”ステートメントを利用します。
止めたい場所で”Stop”と書くだけです。
簡単ですね(^o^)
では動作を確認してみましょう。
0から10000までの数値を、A1セルに順番に入力するプログラムです。
入力したあとに”Stop”を入れておきます。
Sub sample()
Dim i As Long
For i = 0 To 1000
'A1セルにiを入力する
Range("A1") = i
'一時停止する
Stop
Next
End Sub
”Stop”のある位置で、一時停止することが分かりますね(^o^)
Debug.Assertメソッド
Stopメソッドでは、単にStopステートメントが記述されているところで止めるだけですので、先程のようなプログラムでは、ループするたびに止まってしまいます。
例えば「10の倍数になったときだけ止める」など条件付きで停止したい場合は、DebugオブジェクトのAssertメソッドを使うと便利です。
メソッドの引数に「TrueかFalseで評価出来る式」を指定します。
Debug.Assertでは、この式が”False”になった場合にだけ、一時停止してデバッグモードになります。
例えば、先程のコードを次のように書き直してみます。
Sub sample()
Dim i As Long
For i = 0 To 1000
'A1セルにiを入力する
Range("A1") = i
'iが10の倍数のときに一時停止する
Debug.Assert i Mod 10 <> 0
Next
End Sub
‘iが10の倍数のときに一時停止する
Debug.Assert i Mod 10 <> 0
この部分を変更しています。
i Mod 10 <> 0
の部分は、iのあまりが0かどうかを判定しています。
「<>」で評価しているので、0でない場合はTrue、0の場合はFalseが返りますね。
つまり10で割って、あまりがあるかないかになりますので、10の倍数のときはFalseが返り、一時停止してデバッグモードに移ります。
Falseの時に反応するので注意してください。
では実行してみましょう!
「0」は10の倍数じゃないやんけ!っていう意地悪は、サンプルなので勘弁して欲しいです。。。笑
10以降は、10の倍数のときにだけ一時停止してデバッグモードに以降していることが分かります。
たくさんの行をループしているときに、指定の値が出てきたときだけ止めて確認したいときなど非常に便利に使えますよ(^o^)
再開するときは、F5キー(継続)などの実行キーを押すか、VBEで実行ボタンを押してください。
本番環境ではコメントアウトなどで機能しないようにするのを忘れないでくださいね(^o^)
コメント