ある名前のクエリがデータベース内に存在しているかどうかを返すサンプルプロシージャです。任意の名前を引数に指定して呼び出します。その名前のクエリが実在する場合はTrueを、そうでない場合はFalseを返します。
Public Function IsExistQuery(strChkQryName As String) As Boolean
'指定した名前のクエリの有無をチェックする
Dim varRet As Variant
On Error Resume Next
varRet = CurrentDb.QueryDefs(strChkQryName).Name
IsExistQuery = (Err.Number = 0)
End Function
- 「On Error Resume Next」とすることで、次の行以降で発生したエラーを無視して続行するようにします。
- 引数の名前のクエリが実際にあるかどうかは別として、「CurrentDb.QueryDefs(strChkQryName).Name」という命令を実行します。この命令自体は、データベース内からstrChkQryName変数値のQueryオブジェクトの名前(=クエリ名)を取得するためのものです。そのクエリがあればその値が変数varRetに代入されますが、ない場合にはエラーが発生します。エラーは発生しますが上記の「On Error Resume Next」で無視され、次の行へ処理が進みます。
- 次の行で「Err.Number」で発生したエラー番号を取得します。エラーが発生していない、すなわちクエリがある場合はエラー番号は「0」となりますので、「Err.Number = 0」の式はTrueとなり、結果「True」がプロシージャの返り値となります。
- 一方、エラーが発生した場合にはErr.Numberは0以外の値となりますので、「False」がプロシージャの返り値となります。
イミディエイトウィンドウでの実行例:
|