ACCESS リストボックスで選択された値を取得する方法
ACCESSでリストボックスを利用すると、あらかじめ決められた値から選択して入力できます。
ListBox.Columnプロパティを使用すれば、リストボックスで選択された値を他のテキストボックスに表示したり、選択された値に紐づく他のフィールドの値を取得することも可能です。
今回は、リストボックスで選択された値を取得する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。
サンプルデータ
まずは、リストボックスでの値取得を行うために、サンプルデータを準備しました。
一つ目はリストボックスの値集合ソースとなるテーブルです。
MST_商品という商品マスターテーブルを準備しました。
次に、このテーブルを用いたフォームを作成します。
このフォームでは左側のリストボックスの値集合ソースにMST_商品を使っています。
そして、左の商品を選択した際に、右側に対応する商品IDと単価を表示させる機能を実装していきます。
フォームのデザイン
まずはフォームをデザインビューで見てみましょう。
左側のリストボックス、右側のテキストボックスともに非連結で作成してあります。
リストボックスの値集合ソースは「MST_商品」になっていますね。
イベントプロシージャの作成
では、このリストボックスが選択されたときに商品IDと単価が反映されるように、VBAでイベントプロシージャを作成しましょう。
リストボックスの更新後処理にイベントプロシージャを作成します。
イベントプロシージャの記述内容は下記のとおりです。
Private Sub 商品選択_AfterUpdate()
Me!商品ID = Me!商品選択.Column(1)
Me!単価 = Me!商品選択.Column(4)
End Sub
Me!商品ID、Me!単価にそれぞれ値を代入するという簡素な式になっています。
右辺では、Columnプロパティを使用しています。
Columnプロパティを使うと、リストボックスの値集合ソースに指定されたテーブルやクエリの、任意のフィールドの値を取得することができます。
例えば上記の例ではMe!商品選択.Column(1)としていますので、Me!商品選択というリストボックスの値集合ソースである「MST_商品」テーブルから、フィールド1の値を返す、という処理になっています。
ここで、最初に戻って「MST_商品」のフィールドレイアウトを見てみてください。
1つ目のフィールドは商品IDではなく、商品識別IDですよね。
実はColumn関数は0から始まるのです。
ですので、Column(1)は2つ目のフィールドである商品IDを指定するわけです。
同様に、2つ目のコードではColumn(4)で5つ目のフィールドである単価を指定しています。
このプロシージャを実行すると以下のようになります。
リストボックスで選択した値に応じて、右側のテキストボックスに値が反映されていますね。
以上、リストボックスで選択された値を取得する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。