[Access VBA] サブフォーム内に表示するテーブルをボタンで出し分ける

[Access VBA] サブフォーム内に表示するテーブルをボタンで出し分ける

複数のテーブルがあって、それを開くボタンを作ったとき、ユーザーによっては意外と「別タブで開く」のが苦手な人がいるんだなぁと。そこで、別フォームへ遷移してサブフォーム内にテーブルを表示してみる、という方式を試してみました。


完成形

テーブルが3つありまして。「F_メニュー」フォームに、それぞれのテーブル名をキャプションに書いたボタンを3つ作ってあります。単純にこのボタンをクリックしたらそのテーブルが開く、というのなら

と書けばそれでおしまいなんですけど。

ボタンをクリックしたら、「F_テーブル表示」フォームへ遷移して、設置してあるサブフォームで「クリックしたボタンに書かれていたテーブル」を表示する、という方式にしてみます。押されたボタンによって表示するテーブルを切り替えて、さらにサブフォームのラベルもそのテーブル名が表示されるようにしたらスマートに使えるかなぁと。

フォームを遷移っぽく見せるのは前書いたこちらの記事をご参照ください。

実装

「F_メニュー」フォーム

各ボタン上に表示されている文字列は、ボタンの「標題」というプロパティです。VBAで指定するのは「名前」のほうなので、プロパティシートにてそれぞれ上図のように設定しておきます。

このフォームモジュールに書くコードが以下です。

「標題」はVBAでは「キャプション」になります。

14行目、OpenFormメソッドは第7引数にOpenArgsというパラメータを設定することができます。これが結構便利で、自由度の高い値を引き渡すことができるので、ここへ各ボタンがクリックされたときのキャプション(標題)を持ってきて、設定しています。

OpenFormメソッドのパラメータ一覧はこちらを参照してください。

「F_テーブル表示」フォーム

こちらも、各コントロールは図のように設定しておきます。サブフォームは、開くときにその都度ソースオブジェクトを設定するので、設計の段階では非連結で構いません。

このフォームモジュールに書くコードが以下です。

前段階のOpenFormメソッドで指定したテーブル名を、ラベルとサブフォームのソースオブジェクトへそれぞれ設定します。ソースオブジェクトは「オブジェクトの種類.オブジェクト名」としなければならないので、クエリだったら「クエリ.○○」など、変更が必要です。

開いたテーブルのレコード数が多くて最後のレコードがいつも見えるようにしておきたい場合は、5, 6行のように書くとよいですね。

以上です! なんと今日は平成最後の日でした~! 令和でもよろしくおねがいいたします!!

公開日:2019/04/30

書籍を執筆しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)