[Access VBA]ナビゲーションフォームのサブフォームで、コンボボックスの選択肢を別のコンボボックス(orテキストボックス)のデータを条件に動的に変更する方法(値集合ソース,マクロ)

VBA(Access)
この記事は約2分で読めます。
記事内に広告が含まれていることがあります。

概要

 

今回も備忘です。

今回はかなりピンポイントですが、Accessでナビゲーションフォームを使う人には結構ぶちあたりそうな部分だったりします。

 

コード

 

早速ですが、コードを書いていきます。

今回はナビゲーションフォームに設置したサブフォーム上のコンボボックスの選択肢(値集合ソース/以下、ComboA)を別のコンボボックスで選択した値(以下、ComboB)を条件として絞り込む(WHERE条件)コードを作ります。

 

会社名と名前の一覧が書かれたテーブルを担当者一覧(表1)に示しました。

ComboAを担当者、ComboBを会社名として、ComboBで会社名を変えた時、ComboAの選択肢を動的に変えてみます。

会社名に青紙社と入れると担当者の選択肢に宇藤さん・江藤さん・尾藤さんが選べるようになるイメージです。

 

表1 担当者一覧

会社名担当者
赤紙社阿藤 鷹
赤紙社伊藤 滝
青紙社宇藤 卓
青紙社江藤 岳
青紙社尾藤 凧

 

コード1 VBA サブフォームのモジュール内 に書くコード

 

ComboB_Change はComboB(会社名)の値が変わった時のイベントです。ComboBの値が変わった時に動きます。

RowSource は値集合ソースです。 ComboA(担当者)の選択肢を動的に変更します。

 

SQL文のWHERE条件では、サブフォームから指定するとエラーになるため、まずはナビゲーションフォームを指定してあげます。

例)[Forms]![ナビゲーションフォーム名]

 

で、ComboB(会社名)はナビゲーションフォームからするとサブフォームにあたるので、[NavigationSubform].[Form]としてあげてからComboBを指定します。

例)[Forms]![ナビゲーションフォーム名]![NavigationSubform].[Form]![ComboB]

 

ComboAのWhere条件にComboBを指定することで、ComboBの値が変わった時にComboAの選択肢がComboBで指定した会社名の担当者に変わります。

 

今日はここまで。

ノシ

---コメント---

タイトルとURLをコピーしました