和風スパゲティのレシピ

日本語でコーディングするExcelVBA

テスト用コードの実行をフラグ定数で管理する

マクロをテストしたり、不具合を探したりする際、
Debug.Printをはじめとした表示機能を使ったり、
最後に削除する作業シートを残したりします。

Debug.Print 対象セル.Address ' ← 処理セルの表示

' 作業シート.Delete   ' ← 一時的なコメントアウト

 
先日紹介した「配列の中身を新規シートに表示するコード」など、
デバッグ用の自作関数をCallするのもよくありますね。

Call 二次元配列を新規シートに出力する(Arrデータ)

www.limecode.jp


さてこういった作業の規模が大きくなってくると、
これらのコードのONOFFが面倒になってきます。


コメントアウトを取ったり外したり、忘れてマクロが遅くなったり、
外し忘れてログがユーザーに出てしまったり。。。


このような「テストコードが増えてきた問題」の対策として、
テストコードの実行を管理するフラグ定数を作る
というテクニックがあります。


やり方はとても簡単で、↓のようなPublicのフラグ定数をひとつ用意しておき、

Public Const Isデバッグモード = False

各テストをこの定数で分岐するだけでOKです。

If Isデバッグモード Then Debug.Print 対象セル.Address

If Isデバッグモード = False Then 作業シート.Delete

If Isデバッグモード Then Call 二次元配列を新規シートに出力する(Arrデータ)

 
あとはこの定数のTrue/Falseを切り替えるだけで、
テスト用コードの実行を一括で管理できる
というわけですね。


ひとつの改修で複数のテストコードをONOFFしなければいけない時など、
規模が大きくなると割と重宝するテクニックです。

気に入ったら使ってみてください。