リストボックス/コンボボックスの書式設定


オリジナルのリストを設定する

リストボックスのデータは通常、テーブルなどにリンクしたデータを表示しますが、オリジナル のデータを表示することも可能です。

Private Sub Form_Load()
'フォームを読み込んだ時に List1 に以下のデータを表示する
With Me.List1
        .Width = 1600 '幅
        .Height = 900 '高さ
        .RowSourceType = "Value List" 'Type ; 区切り
        .RowSource = "1:新規登録;2:削除;3:変更;4:参照"
    End With
End Sub

コンボボックスの場合

Private Sub Form_Load()
'フォームを読み込んだ時に Combo1 に以下のデータを表示する
With Me.Combo1
        .Width = 1600 '幅
        .Height = 260 '高さ
        .RowSourceType = "Value List" 'Type ; 区切り
        .RowSource = "1:新規登録;2:削除;3:変更;4:参照"
    End With
End Sub

テーブルデータを表示する

「RowSourceType」プロパティにテーブル等のデータをセットするには以下のようにします。コンボボックスも同様です。

Private Sub Form_Load()
Me.Caption = "検索メニュー"

   With Me.List1
        .Width = 1600 '幅
        .Height = 900 '高さ
        .RowSourceType = "Field List" 'Type ; フィールドリスト
        .RowSource = "tbl_顧客リスト"
    End With

   With Me.txt1
        .Width = 1600 '幅
        .Height = 300 '高さ
    End With

End Sub
Private Sub Form_Load()
   With Me.List1
        .Width = 2000 '幅
        .Height = 900 '高さ
        .RowSourceType = "Table/Query" 'Type ; テーブル
        .RowSource = "tbl_顧客リスト"
        .ColumnCount = 3	'リストボックスの列数
        .ColumnWidths = "1.5cm ; 1.5cm ; 2.0cm " '列幅
    End With

'tbl_顧客リストの2列目(氏名)を取得し、Shimeiフィールドに格納する	
   With Me.List1
	.BoundColumn = 2	'2列目を取得
	.ColumnHeads = True	'フィールド名(列見出し)を表示
	.ControlSource = "Shimei" 'Shimeiフィールドに表示
    End With
		
End Sub

コンボボックスのリスト幅と行数の設定

コンボボックスのリスト幅と行数を設定する場合は、以下の通りです。

Private Sub Form_Load()
   With Me.Combo1
        .RowSourceType = "Table/Query" 'Type ; テーブル
        .RowSource = "tbl_顧客リスト"
        .Width = 3000	'リストボックスの横幅
        .ListWidth = 3500	 'リストボックスの列幅
	.ListRows = 8	 'リストボックスの行数
    End With
End Sub

2つのコンボボックスをリンクする

1つ目のコンボボックスで選択されたデータに関連したデータのみを2つ目のコンボボックスに表示します。
以下のようなデータのテーブルがあるとします。

社員コード所属役職氏名
1011総務部部長木下 雄二
1012総務部課長小日向 直美
1014総務部主任大倉 真由美
1101第一営業部部長斉藤 美喜夫
1105第一営業部課長佐藤 賢治
1110第一営業部主任山田 明日香
1220第二営業部課長代理横山 善男
1230第二営業部係長今井 正明

1つ目のコンボボックスの値を所属フィールドにし、2つ目のコンボボックスの値を氏名にしますが、ここで抽出条件に1つ目のコンボボックスのデータを指定します。
1つ目のコンボボックスの「AfterUpdate」イベントに「ReQuery」コマンドを割り当てます。

Private Sub Form_Load()
'フォームを読み込み時、コンボ0 に tbl_社員 の2列目のデータを表示する
'コンボ1 に tbl_社員 の4列目のデータを表示する

  With Me.コンボ0
    	.RowSourceType = "Table/Query"
    	.RowSource = "tbl_社員"
    	.ColumnCount = 2
  End With

  With Me.コンボ1
    	.RowSourceType = "Table/Query"
    	.RowSource = "SELECT [tbl_社員].[氏名], [tbl_社員].[所属] _
    	 FROM tbl_社員 WHERE ((([tbl_社員].[所属])=[Forms]![frm1]![コンボ0])); "
    	.ColumnCount = 4
  End With
	
End Sub

Private Sub コンボ0_AfterUpdate()
'更新後処理 コンボ1のデータ
    DoCmd.Requery "コンボ1"
    
End Sub

フォーカスを取得したらリストを自動表示する

コントロールがフォーカスを取得したらリストを自動表示します。

Private Sub Combo1_Enter()
'コントロールがフォーカスを取得したらリストを自動表示する
	Me!Combo1.Dropdown

End Sub

新規データを入力できるコンボボックス

コンボボックスはレコードソースで指定したデータだけを入力できるので、テキストボックスへの入力時にミスが発生することはありません。
そして、新規のデータを入力できればもっと便利です。
先ず、フォームの任意のテキストボックスをコンボボックスに変更します。そのコンボボックスのレコードソースを変更前のテキストボックスのデータにします。

フォームの読み込み時にコンボボックスの所属と役職の自動拡張とリスト外データの入力を許可を設定します。

例)

社員コード所属役職氏名
1011総務部部長木下 雄二
1012総務部課長小日向 直美
1014総務部主任大倉 真由美
1101第一営業部部長斉藤 美喜夫
1105第一営業部課長佐藤 賢治
1110第一営業部主任山田 明日香
1220第二営業部課長代理横山 善男
1230第二営業部係長今井 正明
所属[コンボボックス] のレコードソース

SELECT 社員.所属 FROM 社員 GROUP BY 社員.所属;



役職[コンボボックス] のレコードソース

SELECT 社員.役職 FROM 社員 GROUP BY 社員.役職;

 

Private Sub Form_Load()
'コンボボックス、所属と役職の自動拡張とリスト外データの入力を許可する

  With Me.Combo所属
        .AutoExpand = True  '自動拡張を許可する
        .LimitToList = False 'リスト外データの入力を許可する
    End With
    
    With Me.Combo役職
        .AutoExpand = True  '自動拡張を許可する
        .LimitToList = False 'リスト外データの入力を許可する
    End With


End Sub