#142 | テスト環境を作るための条件付きコンパイル | VBA | |
#If...Then...#Else ディレクティブ構文を使うと、条件付きコンパイルを行うことができます。 条件付きコンパイルとは、ある条件によって、コードの一部をコンパイルしたりしなかったりすることです。コンパイルというと、デバッグ中の動作は制御できないように思われるかもしれませんが、If...Then...Elseステートメントと同様に、条件によってプログラムの流れを変えるものと考えてよいでしょう。 通常、条件付きコンパイルは、1つのコードを異なるシステム(Windows32ビットや16ビット、あるいはMacなど)で共通化するために使用します。しかし、同じシステムの中であっても、テスト環境と本番の環境を切り替えるという目的にも使うことができます。例えば、"Debug.Print"のようなコードを残したまま、本番環境ではそれを実行させない、といったことができます。 次のコードが、条件付きコンパイルの例です。「DEBUG_MODE」という定数の値によって、テスト環境と本番環境を切り替えています。この値を変更するだけで、それ以外のコードはいっさい手を付けずに、切り替えを行うことができます。 Option Compare Database
Option Explicit #Const DEBUG_MODE = True Trueのときはテストモードです。本番ではこれをFalseにします Sub SampleProc() Dim dbs As Database Dim rst As Recordset Dim strAddress As String Set dbs = CurrentDb Set rst = dbs.OpenRecordset("顧客マスタ") With rst Do Until .EOF #If Not DEBUG_MODE Then '正式に走らせるときはテーブルのデータを使う strAddress = rst!住所 #Else 'デバッグ中は住所をイミディエイトウィンドウに表示する Debug.Print rst!住所 'デバッグ中は常に次のIF文に引っ掛かるようにする strAddress = "札幌市" #End If If strAddress Like "札幌市*" Then '住所が札幌市ならここで何らかの処理を行います.... End If .MoveNext Loop .Close End With #If Not DEBUG_MODE Then '正式に走らせるときは常にレポートを印刷する DoCmd.OpenReport "rpt顧客データ" #Else 'デバッグ中は常にプレビューする DoCmd.OpenReport "rpt顧客データ", acViewPreview #End If End Sub |
|||
|
Copyright © T'sWare All rights reserved |