NO.10 コンボボックスで入力する

データ入力画面では全てがキー入力ですと大変でもあり、ミスも発生しやすくなります。 例えば決まりきった文字列の入力であれば、対象リストからマウス選択だけで入力したほうが楽です。 そのために入力できるものを限定できるというメリットも生まれます。

コンボボックスを作成する

コンボボックスをフォームへ作成します。 以下の例題は社員を選択するコンボボックスですが、引合い入力などで対応社員を入力するということを仮定します。

コンボボックス

フォームにコンボボックスを配置したときにコンボボックスウィザードの指示通りに作成すれば良いですが、 色々な状況によりリスト表示する内容を変更したい場合は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

| HOME | INDEX | | |