Accessで私が日常的に使用しているテーブル存在チェック関数(ExistTable)
' ---------------------------------------------------------------------------------- ' 関数名 : ExistTable ' 処理内容 : テーブル存在チェック ' 引 数 : TableName ' 戻り値 : 結果 ' ---------------------------------------------------------------------------------- Public Function ExistTable(tableName As String) As Boolean On Error Resume Next ExistTable = CurrentDb.TableDefs(tableName).Name = tableName End Function
↑これをモジュールに入れておいて、必要に応じてCALL
呼び方例
' テーブル存在チェック If ExistTable(tblNm) Then ' テーブルあり Else ' テーブルなし End If
関数にはPublic(パブリック) とPrivate(プライベート)があります。
他からCALLされるのはPublic、自分のフォームやモジュール単体のみで使用するならPrivate
フォームの場合は、殆どPrivateですが、一覧系の表示は入力画面から戻る際に(閉じたイベント等で)
再表示とかさせる事が多いので、PrivateではなくPublicにして作成することが多いです。
私はVBAでしか作成した事がないけれど、マクロのみで作成されているシステムもあるんだと
先日感心していた所です。コントロール名もデフォルトのままマクロを組んでるから
下手に修正できないという・・埋め込みマクロだと1つ1つのコントロールを
見て行かないとわからないから、下手にコントロール名も変更できないという・・
マクロのみでもそれっぽく立派なシステムが作れてしまうのでAccessって凄いと思うけど
複合検索をやりたいとか、細かい事に対応するのはやっぱりVBAしかないと思っています。
でも、後からVBAで直すのが大変で苦戦中。
それでも、へ~こんな使い方あるんだと感心する使い方をしていて驚いています。
私が知っている知識も偏っていたのかな・・と、Accessは広いな~みたいな。
いやいや、でもコントロール名は例えば、マクロやイベントを記述する場合
そのままだと不便だから、使うコントロール名くらい「txt日付」など名前を
付けた方が良いと思います。「テキスト234」のままマクロで使うのはやめましょう。(涙)
埋め込みマクロも出来ればやめてほしい。VBAで書けば一括検索で一括置換もできるから
何かあったら修正も楽ですがマクロは、ちまちま1つずつ修正しないといけないから。。
コメント
初めまして。もうすぐ65歳になる者です(現役ではありませんが)。
Accessのテーブル存在確認のルーチンを探していました。
以前、テーブルコレクション内をループで回して名前に一致を見つけていたのですが、簡単なコードで実装できることに目からうろこでした。
私のプログラミング歴は、8ビットのアセンブラに遡ります。その後、BASICを経て、C系言語(C,C++,VC++,VC#)に進み、50歳を過ぎた頃にExcel VBAを始め、今ではAccess VBA、Word VBAとの連携もできるようになりました。
「マクロでもコントロールに名前を付けましょう」というくだりから、現役時代のあることを思い出しました。ある人がExcelの関数(VBAではない)を駆使して業務用のツールを作成し、課内で発表しました。締めに「Excelの限界です」と言っていました。私は「Excelの限界ではなく、Excelに対するあなたの知識の限界だろう」と思って聞いていました。
つまらない話になってすみません。
今後もワザやヒントをよろしくお願いします。
口袋怪獣
>口袋怪獣様
コメントありがとうございます!
2年前の記事ではありますが、コメント頂き嬉しいです。
VBAは好みの関数を集めておくと、何かあった時に応用が効くので良いですよね。
VBAは好きですが、実際、会社ではそんなにVBA中心に仕事していたわけではなく
最後は、要件定義や設計がメインだったように思います。
在宅で仕事するようになって、再びPGに戻ったような感じになり
やはりコード書いている時が一番楽しいなと感じます^^
>「Excelの限界ではなく、Excelに対するあなたの知識の限界だろう」
面白いですね。VBAは結構駆使すると色々できるし凄いですよね。
あーこんな事もできるんだ、と思うと奥が深いと思います。
私はSQLが好きなので、EXCELよりAccessの方が好きです。
データ管理がしやすいからです。後はメンテナンス性など。
アプリとDBを分離して納品しておけば、後からの修正もだいたいアプリの方だけ修正して
納品すれば、データのマージをしなくて済むという利便性もあります。
VBAの情報はかなり大量に流れているので勉強もしやすいですね。
今後も、何か訳に立ちそうな事があったら記事にしたいなと思います。