質問: Me.cmb_クライアント名検索.Column(1)」が原因なのですが、メッセージボックスで「Me.cmb_クライアント名検索.Column(1)」を表示するときちんとクライアントIDが出てきます。なぜこのようなエラーが発生してしまうのでしょうか。 ### やりたいこと2 いったん1のエラー個所をなくし、クライアントIDは手動で打ち込むものとします。 1行目のレコードを打ち込むと勝手に2行目にも同じ値が入り、 2行目のレコードを変更すると 1行目の内容も一緒に変わってしまいます。「cmb_クライアント名検索」を、1行単位で行うにはどうすればよいのでしょうか。
回答: コンボボックスのプロパティを下記のように設定してください。 **cmb_クライアント名検索** * コントロールソース: クライアントID * 値集合ソース: SELECT クライアント名, クライアントID FROM T_クライアントテーブル ORDER BY クライアント名; * 連結列: 1 * 列数: 2 * 列幅: 3cm;5cm この設定で、ボックスにはクライアント名か表示されますが、コントロールソースのフィールドには `連結列:1`で指定した2列目(クライアントID) の値が格納されます。 こうすれば、コンボボックスで名前を選択すれば、クライアントIDのテキストボックスには自動でIDが表示されます。 このコンボボックスの使い方が理解できれば、クライアントIDのテキストボックスもコンボボックスにして、IDでも名前でもリストから選択できるようになります。詳細は下記を参照してください。 コードでも名称でも入力できるコンボボックス - hatena chips あとは、cmb_クライアント名検索の変更時のイベントプロシージャを下記のように変更してください。 ``` Private Sub cmb_クライアント名検索_Change() Dim stSQL As String stSQL = "SELECT クライアント名, クライアントID FROM T_クライアントテーブル " & _ "WHERE クライアント名 Like '*" & Me.cmb_クライアント名検索.Text & "*' " & _ "ORDER BY クライアント名;" Me.cmb_クライアント名検索.RowSource = stSQL If blClick Then blClick = False Else Me.cmb_クライアント名検索.Dropdown End If ’ Me.クライアントID = Me.cmb_クライアント名検索.Column(1) ←これは削除してください。 End Sub ``` これでいけるはずです。