コンボボックス 内容を連動して切り替える その1 [コンボボックス]
ちょっとコンボボックスの小ネタ。
コンボボックスに表示される項目の内容を、条件で絞り込む方法です。
例として、なんかの大分類と、その下に位置する中分類があるとします。
例えばこんな感じで。
左が大分類、右が中分類。意味は、「やさい」「肉」「米」などの大きめのグループ分けがあって、それぞれにもう少し細かい分類の定義がある、と言ったシチュエーションです。
コレをですね、入力画面で、たとえば大分類「肉」を選択したら、中分類は選択肢に肉のみを表示するようにします。
画面はこんな感じで、コンボボックスを2つ並べて設置します。 よくあるアレですね。
これは大部分はACCESSの仕掛けで作れます。VBAはちょっとだけです。
まず、大分類のコンボボックス。これは、データソースに大分類を設定しておくだけです。
次に、中分類のコンボボックス。こっちも似たような感じなのですが、大分類の選択内容によって、表示内容を絞り込むので、その仕掛けを入れておきます。
こんなふうに。
赤い囲みの所に、抽出条件を書いています。
FCMBSUMは、このサンプルフォームの名前で、txtLBUNCDは、大分類コードコンボボックスの名前です。
中分類テーブルにあるデータのうち、LBUNCD=大分類コンボボックスで選択されたコードとなる物だけが、中分類コンボボックスに表示されます。
ただし、これだけだとうまくいきません。中分類コンボボックスのリスト内容は、自動では更新されません。このままだと、大分類の値を入力し変えても、中分類のリストは変わりません。
大分類コンボボックスが更新された後に、中分類コンボボックスの表示内容を更新する処理が必要になります。
大分類コンボボックスの「更新後処理」に以下のコードを書きます。
Private Sub txtLBUNCD_AfterUpdate()
'大分類 更新後
'中分類をリクエリする
Me.txtMBUNCD = Null
Me.txtMBUNCD.Requery
End Sub
Requeryが実行されることで、クエリが再実行され、リスト内容が新しくなります。
単純な場合はこの方法で実現できますが、複雑な場合は、コンボボックスのデータソースSQLをVBAのロジックで生成してやる必要があります。
その場合の処理例はこちら。
コンボボックス 内容を連動して切り替える その2
コメント 0