Accessには、プルダウンリストのことをコンボボックスといいます。(意味は同じです)
コンボボックスには、「テーブルに登録されている値をリストに出して選択させる方法」と「固定のリスト値を設定しておいて選択させる方法」があります。
基本的に、どのコンボボックスもテーブルで管理するのがベストなのかもしれませんが
そうするとコンボボックスの種類だけテーブルが必要となりテーブルの数が増えすぎてしまうのが問題となります。(実際そういうプロジェクトあります)
しかし予め選択肢が固定の場合は、値リストを使用することもあります。
ここでは、値リストを使用してコンボボックスを表示する方法と、コンボボックスの値を取得して表示する方法についてご紹介します。
1. フォームにコンボボックスを配置
ファームにコンボボックスとテキストボックスを配置します。
・コンボボックス
名前:cbo血液型
・テキストボックス
名前:txtID
・テキストボックス
名前:txt値名
2. コンボボックスのプロパティを修正
次にコンボボックスのプロパティを修正してリストの設定値をセットします。
コンボボックスを選択しプロパティを確認します。
■データタブを選択
値集合ソース:1;A型;2;B型;3;AB型;4;O型;9;不明
値集合タイプ:値リスト
連結列:1
■書式タブ選択
列数:2
列幅:0cm;1cm
リスト行数:16
リスト幅:7cm
まず、列数2に対し列幅を0cm;1cmとしています。
これは、列は2つあるけれど1列名は非表示になっている状態です。
値集合ソースは、1;A型 としているので1は非表示となりA型のみ表示されます。
それに対して連結列は1としています。
ここでいう連結列とは、列数のどの列を使うのか?という事をいいます。
コンボボックスの選択値を使う場合、ここでは1のコードを取得することになります。
3. 値リストで選択された値を取得
次にイベントを記載していこうと思います。
コンボボックスのイベントタブをクリックします。
Private Sub cbo血液型_AfterUpdate() Me.txtID.Value = "" Me.txt値名.Value = "" If Me.cbo血液型.Value <> "" Then Me.txtID.Value = Me.cbo血液型.Column(0) Me.txt値名.Value = Me.cbo血液型.Column(1) End If End Sub
4. 保存して実行
実際に動かしてみます。
コンボボックスで選択したものが横に表示されるようになりました!
Private Sub cbo血液型_AfterUpdate() Me.txtID.Value = "" Me.txt値名.Value = "" If Me.cbo血液型.Value <> "" Then Me.txtID.Value = Me.cbo血液型.Column(0) Me.txt値名.Value = Me.cbo血液型.Column(1) MsgBox Me.cbo血液型.Value, vbInformation + vbOKOnly, "血液型を選択されました" ' ←★ここを追加 End If End Sub
ここでデータタブの
連結列:1→2
に変更すると選択したほうの文字が表示されます。
Me.cbo血液型.Value
とすると連結された値の方を取得するようになります。プログラムって動くと楽しいですね。
コメント