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