#736 指定した名前のテーブルの有無をチェックする VBA

ある名前のテーブルがデータベース内に存在しているかどうかを返すサンプルプロシージャです。任意の名前を引数に指定して呼び出します。その名前のテーブルが実在する場合は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」がプロシージャの返り値となります。

イミディエイトウィンドウでの実行例:
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved