データ入力画面では全てがキー入力ですと大変でもあり、ミスも発生しやすくなります。 例えば決まりきった文字列の入力であれば、対象リストからマウス選択だけで入力したほうが楽です。 そのために入力できるものを限定できるというメリットも生まれます。
コンボボックスをフォームへ作成します。 以下の例題は社員を選択するコンボボックスですが、引合い入力などで対応社員を入力するということを仮定します。

フォームにコンボボックスを配置したときにコンボボックスウィザードの指示通りに作成すれば良いですが、 色々な状況によりリスト表示する内容を変更したい場合はVBAを使用することになります。
選択される内容は社員テーブルより使用しますが、対象とする所属で絞込みしたい場合を想定します。
| 作成するVBA |
|---|
|
・ ・ coSyain.RowSourceType = "Table/Query" coSyain.RowSource = "select 氏名 from 社員 where 所属CD='A0001'" coSyain.LimitToList = True ・ ・ |
コンボボックスの各プロパティに設定する値を説明します。
| プロパティ | 説明 |
|---|---|
| RowSourceType/値集合タイプ | クエリーあるいはテーブルを使用する場合は"Table/Query"を設定します。 |
| RowSource/値集合ソース |
クエリーの設定は、 select 表示するフィールド名 from テーブル名 where 条件 の形式になります。なお、この式をSQLといいます。 条件の記入方法はNO.3 クエリーを開くボタンをメニューフォームに作成するの中にある抽出条件と同様ですが、抽出が必要でない場合where 条件は不要です。 |
| LimitToList/入力チェック | Trueを設定した場合は入力された内容が値集合ソースの中に存在するかチェックを行う。 |
選択される内容は値リストより使用しますが、その値リストが外部情報より設定したい場合を想定します。
| 作成するVBA |
|---|
|
・ ・ coSyain.RowSourceType = "Value List" coSyain.RowSource = "安藤;伊藤;上田;遠藤;奥村" coSyain.LimitToList = False ・ ・ |
コンボボックスの各プロパティに設定する値を説明します。
| プロパティ | 説明 |
|---|---|
| RowSourceType/値集合タイプ | 値リストを使用する場合は"Value List"を設定します。 |
| RowSource/値集合ソース | コンボボックスの一覧に表示したい内容を ; で区切って設定します。 |
| LimitToList/入力チェック | Falseを設定した場合は入力された内容は値集合ソースの中に存在するかのチェックは行いません。 |
社員のコンボボックスを前記のように作成した場合にテーブルへ保存されるのは氏名です。 しかし、テーブルへ保存するのは社員コードにしたい場合がありますね。 そのときは各プロパティを以下のように設定します。
| プロパティ | 説明 |
|---|---|
| RowSourceType/値集合タイプ | クエリーあるいはテーブルを使用する場合は"Table/Query"を設定します。 |
| RowSource/値集合ソース | クエリーの設定は、 select 社員CD,氏名 from 社員 where 所属CD='A0001' の形式になります。 |
| ColumnCount/列数 | 列数は社員CDと氏名ですから2を設定します。 |
| BoundColumn/連結列 | 返す値の列番号。この場合社員CDを返したいため1を設定します。ちなみに氏名の場合は2になりますね。 |
| ColumnWidths/列幅 | 表示されるリストの幅を設定します。この幅が設定されていないと社員CDと氏名の両方表示されますので、それぞれの幅を;で区切って"0cm;"を設定します。つまり社員コードの幅は0cm、氏名はデフォルト(コンボボックス幅)になります。 |
| LimitToList/入力チェック | Trueの設定のみ可能となります。 |
作成日:2003/03/28
Copyright(C) 2002-2003 株式会社サープレス