『デバッグ方法について』(まさる)
実際には複雑なプログラムですが。 以下のようなテストプログラムを作りました。
Private Sub sub1()
On Error GoTo ERROR
Debug.Print "[" & sub2 & "]"
Exit Sub
ERROR:
MsgBox ("ERROR:sub1")
End Sub
Private Function sub2()
On Error GoTo ERROR
sub2 = sub3
Exit Sub
ERROR:
MsgBox ("ERROR:sub2")
End Function
Private Function sub3()
On Error GoTo ERROR
sub3 = 1 / 0
Exit Sub
ERROR:
MsgBox ("ERROR:sub3")
End Function
実際のプログラムではふくざつなので、ステップ実行で 進めているとデバッグに非常に時間がかかります。
最初は sub3 のON Error GoTo ERROR を ON Error GoTo 0 にすると止まってくれるのかと思ったのですが Sub2 の ERROR に飛んでしまいます。
そこで、ON Error GoTo ERROR を ON Error GoTo 0 に 手修正で変換していたのですが、面倒になってきたので先頭に以下を挿入し #Const DEBUG_MODE = 1 ON Error Goto Error の部分を以下のようにしました。
#If DEBUG_MODE = 1 Then On Error Goto ERROR #ELSE On Error Goto 0 #ENDIF
これで #Const DEBUG_MODE = 1 の 1 を 0 にすることで本番、1でデバッグ とすることができましが、このファイルを人に渡したときに #Const DEBUG_MODE = 0 にするのを忘れてしまいました。 長くなりましたが、VBEのからの実行時のみ DEBUG_MODE = 1 で処理され、 シートやユーザーフォームなどから直接実行された時は DEBUG_MODE = 0 で 処理されるようなことはできませんか?
また、他にもっといいデバッグの方法があれば教えてください。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
VBEのメニューのツール→オプションで エラートラップのオプションを[エラー発生時に中断]を選択してください。 (´・ω・`) 2026/05/19(火) 10:35:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.