条件付きコンパイル ー VBAでコードを選択的に実行する

VBAで開発を行っていると、実行環境の混在やデバッグ用コマンドなどによってコードをある時には有効にしておきたいが、別の時には無効にしたいということがよくあります。

この時条件付きコンパイラを使用すれば簡単にコードの有効無効切り替えがっできます。

今回はこの条件付きコンパイラについて勉強しました。

 

 

 

 

コメントアウトによる実行コードの変更

条件付きコンパイルを知る前、私はデバッグ用コードや実行環境の変更を次のようにコメントによって行っていました。

 

 

しかしこのようなコメントアウトによる実行コードの変更は次のような問題点があります。

  • 時間がかかりメンドウ
  • 変更に漏れや抜けが起きる可能性が多い

 

条件付きコンパイル

条件付きコンパイルはC言語のプリプロセッサのように、ある条件をもとに実行するコードを変更することができます。

上記のコードを持ちに条件付きコンパイルを使用した例を挙げます。

上記のコードでconEnv の値を変更することによって実行するコードを変更することができます。

 

コードの説明

  •  #const                            : 条件付きコンパイル用の定数宣言
  •  #IF  A  Then  B  #Endif : コードブロックを指定するディレクティブ。 A にコードを実行する条件を、B に実行するコードを記述する。

 

 

システムが提供するコンパイラ定数

定数は自分で定義するだけではなくシステムが提供してくれるものもあります。例を下に示します。

 

bit数 Win16 Win32 Win64
バージョン Vba6 Vba7

 

これらの定数を使用すれば実行環境ごとに、使用するコードを自動的に変更することができます。

 

プロジェクト全体での条件付きコンパイルの使用

条件付きコンパイル用に宣言された定数のスコープはmodle内だけです。プロジェクト全体で条件付きコンパイルを使用したい場合は次のプロジェクトのプロパティから設定します。

 

VBA project

 

project property

 

プロパティ内の条件付きコンパイル引数に定数名とその値を入力すれば、プロジェクト全体で条件付きコンパイルを利用できます。

 

まとめ

  • コメントアウトによる実行コードの選択はミスが多く、煩わしい
  • 環境や条件によって実行するコードを変更するときは条件付きコンパイルを使用する
  • #Const で条件付きコンパイル用定数を定義する
  • #If  ~  Then  ~  #Endif  で実行条件と実行コードを囲う
  • プロジェクト全体で使用する場合は、プロジェクトのプロパティで定数を設定する

 

参考文献

  1. MSDN 条件付きコンパイルについて
  2. コンパイラ定数

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA