アクセスVBAコンボボックスの2列目以降の値の扱い方

 

アクセス担当のまみです。

 

コンボボックスって入力項目を表示してくれるので、その中から選べば良いので便利ですね。自分で入力じゃなくて、選択すればいいので入力ミスはない!

 

テーブルやクエリを使って表示させられるので、名称等あらかじめそろえておけるんですね。

 

便利なんだけど、テーブルやクエリのフィールドが複数あると、データの登録のコードはどうやって書いたらいいんだろう?

 

今回は、コンボボックスのテーブルへのデータ登録の方法をお伝えしますね。

Contents

ファイルを準備しよう

 

今回、説明のために「営業日報」ファイルを使用します。同じファイルの方が理解しやすいのでお時間ありましたらぜひ作成してみてくださいね!

 

【アクセス】コンボボックスにテーブルの値を表示させよう

2018年10月24日

 

商品をどれだけ販売したかを記録していくイメージで作成してみましょう。

 

テーブルの作成

 

では、「営業日報」ファイルに「T_商品マスター」を作成しましょう。

 

テーブルの構造は下記のように設定します。

フィールド名 データ型
商品コード 短いテキスト
商品名 短いテキスト
金額 通貨型

 

(はてな君)
テーブルがたくさん増えてきた!なんかデータを扱うプロみたい!

 

 
「フィールド名」と「データ型」を入力できたら、データシートビューに切り替えてデータを入力してみましょう。
イメージしやすいデータがあればそのデータを入力してみてくださいね。
 
思い浮かばなかったら、私と同じデータをどうぞ!
 
 
 
 
 
それからもう1つ「T_営業日報」を作成しましょう。
「T_営業日報」にデータを登録していくようになります。
 
 
 
フィールド名 データ型
登録NO オートナンバー型
所属部課コード 短いテキスト
所属部課 短いテキスト
社員コード 短いテキスト
氏名 短いテキスト
商品コード 短いテキスト
商品名 短いテキスト
数量 数値型
登録日付 日付/時刻型

 

 
 
 
 

フォームの作成

 

「F_営業日報」フォームから商品名と数量が入力できるようにしましょう。

商品名はコンボボックス、数量はテキストボックスを使用しましょう。

 

[quads id=2]

 

(はてな君)
わかったぁ!商品名は「T_商品マスター」を使うんだ!

 

商品名と数量を入力できるようにしましょう。

 

まずは、コンボボックスとテキストボックスを1つずつ配置します。

 

コンボボックス

ラベルのプロパティーシート

標題(書式タブ) 商品名

 

コンボボックスのプロパティーシート

名前(その他タブ) cmb商品名
値集合ソース(データタブ) T_商品マスター
列数(書式タブ) 3
列幅(書式タブ) 0cm;2cm;0cm

 

テキストトボックス

ラベルのプロパティーシート

標題(書式タブ) 数量

 

テキストボックスのプロパティーシート

名前(その他タブ) tx数量
IME入力モード(その他タブ) 半角英数

 

それから、データの登録ができるようにボタンを1つ配置しましょう。

 

ボタンのプロパティーシート

名前(すべてタブ) btn登録
標題(すべてタブ) 登録

 

 

 

コンボボックスの2列目以降の値の登録方法は?

 

(あいちゃん)
コンボボックスってフォーム上に表示されている値以外にも情報を持っているんです。
 
 
 
(はてな君)
そっかぁ、だから列幅で表示の設定するんだぁ。あれっじゃぁテーブルに登録する時はどうすればいいの?
 

 

 

コンボボックスの値は Columnを使用することで登録することができます。

 

実際に、データを登録するコードを追加してみましょう。

 

 

①「btn登録」ボタンを選択した状態で、プロパティーシートの②「イベント」タブから「クリック時」で「イベントプロシージャ」を選択して、コードを表示します。

 

「Private Sub btn登録_Click()」と「End Sub」の間に下記のコードを追加しましょう。

 

    Dim Rst As DAO.Recordset
    Set Rst = CurrentDb.OpenRecordset("T_営業日報", dbOpenTable)
    
    With Rst
        .AddNew
        .Fields("所属部課コード") = Me!cmb部課名.Column(0)
        .Fields("所属部課") = Me!cmb部課名.Column(1)
        .Fields("社員コード") = Me!cmb氏名.Column(2)
        .Fields("氏名") = Me!cmb氏名.Column(3)
        .Fields("商品コード") = Me!cmb商品名
        .Fields("商品名") = Me!cmb商品名.Column(1)
        .Fields("数量") = Me!tx数量
        .Fields("登録日付") = Now
        .Update
    End With
    
    Rst.Close
    Set Rst = Nothing
        
    MsgBox "データが登録されました"

 

(はてな君)
あっ!コンボボックスの値がちゃんと表示された!商品コードには.Column(0)って使わなくてもちゃんと表示されるんだね。

 

(あいちゃん)
省略すると一番先頭のフィールドが表示されるんだよ!

 

コードをコピーされたい場合は下記の記事を参考にしてください。

関連記事

 

色々試してみたら、「F_営業日報」は保存して閉じておきましょう。

 

まとめ

 

コンボボックスって、フォームに表示させるのも、データの登録もちょっと設定とかあって難しいかも・・・

 

何度もやってるうちに慣れてくるのでここは踏ん張りどころです!

 

 

スポンサーリンク