テキスト ボックス (TextBox) コントロール利用上のヒント リスト ボックス

【 Visual Basic フォームについて 】
P.1
テキスト ボックス (TextBox) コントロール利用上のヒント
テキスト ボックス (TextBox ) コントロールは、Text、MultiLine 、WordWrap 、および AutoSize の 4 つのプロ
パティにより制御される、柔軟性の高いコントロールです。
Text プロパティには、テキスト ボックス (TextBox ) コントロールに表示する文字列を設定します。
MultiLine プロパティは、文字列を 1 行で表示するか、複数行で表示するかを指定します。改行文字は、行
が終わって次の行が始まる場所を表します。
WordWrap プロパティを使うと、テキスト ボックスの幅よりも長い行をテキスト ボックスの幅に収まるように文
字列を折り返すことができます。
WordWrap プロパティに偽 (False ) を設定すると、改行文字がない限り、改行されません。WordWrap プロパ
ティに偽 (False ) を設定すると、テキスト ボックスからはみ出す行がでてくる可能性があります。この場合、テ
キスト ボックス (TextBox ) コントロールの幅に収まる部分だけが表示され、はみ出す部分は表示されませ
ん。WordWrap プロパティは、MultiLine プロパティに真 (True) が設定されている場合のみ利用できます。
AutoSize プロパティは、文字列がすべて表示されるようにテキスト ボックス (TextBox ) コントロールのサイ
ズを自動調整するかどうかを指定します。AutoSize プロパティに真 (True) を設定すると、テキスト ボックス
(TextBox ) コントロールの幅は、文字列の長さと文字列表示用のフォント サイズによって自動的に伸縮しま
す。既定値は偽 (False ) です。
AutoSize プロパティは、次のような状況で利用すると便利です。
単一行または複数の行のキャプションを表示するとき。
単一行のみ表示するテキスト ボックス (TextBox ) コントロールの内容を表示するとき。
読み取り専用の複数行を表示するテキスト ボックス (TextBox ) コントロールの内容を表示するとき。
メモ MultiLine プロパティおよび WordWrap プロパティが設定されている、何も情報が入力されていないテ
キスト ボックス (TextBox ) コントロールに、AutoSize プロパティを設定することは避けてください。これらのプ
ロパティが設定されているテキスト ボックス (TextBox ) コントロールに文字列を入力すると、テキスト ボック
ス (TextBox ) コントロールの幅は、1 文字分の大きさとなり、文字列の行の長さの分だけ細長くなります。
リスト ボックス (ListBox) コントロールのスタイル
スタイルが fmListStylePlain の場合は、各項目は項目ごとに異なる行に表示されます。このスタイルの場
合、ユーザーは 1 つ以上の行を強調表示することにより項目を選択します。
スタイルが fmListStyleOption の場合は、各行の先頭にオプション ボタンまたはチェック ボックスが表示さ
れます。このスタイルの場合、ユーザーはオプション ボタンまたはチェック ボックスをクリックすることにより
項目を選択します。チェック ボックスが表示されるのは、MultiSelect プロパティが fmMultiSelectMulti また
は fmMultiSelectExtended の場合だけです。
【 Visual Basic フォームについて 】
P.2
オプション ボタンまたはチェック ボックスを持つリスト ボックス (ListBox)
コントロールを作成する
1. プロパティ ウィンドウで ListStyle プロパティを選択します。
2. 右側の下向き矢印をクリックして、選択可能なスタイルの一覧を表示します。
3. 一覧から fmListStyleOption を選択します。
ListStyle プロパティに fmListStyleOption が設定されているときは、MultiSelect プロパティでリスト ボック
スにチェック ボックスを表示するか、オプション ボタンを表示するかを決めます。このとき、MultiSelect プロ
パティが fmMultiSelectSingle の場合は、オプション ボタンを持つリスト ボックスになります。MultiSelect プ
ロパティが fmMultiSelectMulti または fmMultiSelectExtended の場合は、チェック ボックスを持
リスト ボックス (ListBox) コントロールまたはコンボ ボックス (ComboBox)
コントロールに項目を追加する
列が 1 つのリスト ボックス (ListBox) コントロールまたはコンボ ボックス (ComboBox) コントロールでは、リ
ストへの項目の追加は AddItem メソッドを使用するのが効率的です。一方、複数の列があるリスト ボックス
(ListBox) コントロールまたはコンボ ボックス (ComboBox) コントロールでは、List プロパティと Column プロ
パティによりリストへ項目を追加します。この場合、2 次元配列からリストをロードできます。
複数の列があるリスト ボックス (ListBox) コントロールまたはコンボ ボッ
クス (ComboBox) コントロールに対して行える操作
複数の列があるリスト ボックス (ListBox ) コントロールまたはコンボ ボックス (ComboBox ) コントロールの列
幅を設定するには、ColumnWidths プロパティですべての列に対して幅をポイント単位で指定します。列幅と
して 0 を指定した列は、情報が非表示になります。
リスト ボックス (ListBox ) コントロールまたはコンボ ボックス (ComboBox ) コントロールの 1 列だけを表示し
てほかの列をすべて非表示にするには、非表示にする列の ColumnWidths プロパティに 0 を設定し、表示
する列の ColumnWidths プロパティに適切な値 (通常は、既定値のまま) を設定します。また、これらのコン
トロールでは、ユーザーが行を選択したときに、TextColumn プロパティで指定した列の内容が Text プロパ
ティに設定されるため、TextColumn プロパティを使って、表示するデータ列を指定することができます。コン
ボ ボックス (ComboBox ) コントロールでは、TextColumn プロパティで指定した列の内容がコントロールのテ
同様に、BoundColumn プロパティに列の番号を指定すると、ユーザーが行を選択したときに、どの列の値が
コントロールに格納されるかを設定できます。
【 Visual Basic フォームについて 】
P.3
Listプロパティ又はColumnプロパティを使ってリストに項目を追加する
1. 複数の列があるリスト ボックス (ListBox ) コントロールまたはコンボ ボックス (ComboBox ) コントロール
を作成します。
2. リストに追加したい項目が含まれる 2 次元配列を作成します。
3. リスト ボックス (ListBox ) コントロールまたはコンボ ボックス (ComboBox ) コントロールの
ColumnCount プロパティにリスト内の項目数と同じ値を設定します。
4. 次のいずれかの操作を行います。
List プロパティの値として配列を設定します。リスト ボックス (ListBox ) コントロールの内容は、配列の
内容と同じになります。
Column プロパティの値として配列を設定します。Column プロパティは行と列を置き換えるため、リスト
ボックス (ListBox ) コントロールの各行の内容は、配列の対応する列の内容と同じになります
リスト内の項目を自動選択する方法
Microsoft Forms では、ユーザーが入力した値をリスト ボックス (ListBox ) コントロールまたはコンボ ボック
ス (ComboBox ) コントロールのリスト内の項目と突き合わせ、一致する項目を自動的に選択する方法が 3
種類用意されています。
[マッチングをしません] - ユーザーが入力した内容と、リスト内の項目との突き合わせを行いません。
[1 文字目が一致する候補を検索] - 最後に入力した文字と、リスト内の各項目の先頭の文字とを突き合
わせます。リスト内の最初に一致した項目が選択されます。
[完全に一致する単語だけを検索] - ユーザーが入力した内容とリスト内の各項目とを突き合わせ、正確
に一致する項目を発見します。
この突き合わせ機能は 2 秒後にリセットされます (日本、韓国などの東アジアの設定では 6 秒後)。たとえ
ば、全米 50 の州のリストで「CO」とすばやく入力すると、"Colorado" が選択されます。ただし、ゆっくりと
「CO」と入力すると、"O" を入力するまでの間に自動突き合わせ機能がリセットされるため、"Ohio" が選択
[完全に一致する単語だけを検索] を使う場合は、リストの項目を昇順または降順に並べ替えておくのが望ま
しいといえます (TextColumn プロパティを使って並べ替えができます)。リストが昇順または降順に並べ替え
られていないと、突き合わせが正確に行われない場合があります。たとえば、リストに "Alabama"、
"Louisiana"、"Alaska" がこの順序で含まれている場合、ユーザーが「ala」と入力すると、"Alabama" が一致
した項目として選択されることになります。このリストには、ユーザーの入力した "ala" に一致する可能性の
ある項目が 2 つ存在するため、この結果はあいまいなものとなります。項目を昇順または降順に並べ替えて
【 Visual Basic フォームについて 】
P.4
チェック ボックス (CheckBox) コントロール
項目の選択状態を表示します。
解説
チェック ボックスは、"はい/いいえ"、"真 (True)/偽 (False)"、"オン/オフ" のような 2 つの状態を切り替え
るときに使います。チェック ボックスを選択すると、チェック マークが表示され、設定値は "はい"、"真
(True)"、または "オン"となります。一方、チェック ボックスの選択を解除すると、チェック マークの表示は消
えて、設定値は "いいえ"、"偽 (False)"、または "オフ"になります。TripleState プロパティの設定により、設
定値として Null 値を持たせることもできます。
チェック ボックス (CheckBox ) コントロールをデータ ソースに連結した場合は、チェック ボックス (CheckBox )
コントロールの設定値を変更すると、データ ソースの値が変更されます。チェック ボックス (CheckBox ) コン
トロールが無効になっている場合、現在の状態は表示されますが、淡色表示され、ユーザー インターフェイ
スからそのチェック ボックスの状態を変更することはできません。
関連する項目群の中から複数の項目を選択する場合には、グループ ボックスの中に複数のチェック ボック
ス (CheckBox ) コントロールを配置します。たとえば、取扱商品の一覧を並べて、各商品名の前にチェック
ボックス (CheckBox ) コントロールを配置すると、注文フォームを作成できます。ユーザーは、該当する商品
のチェック ボックスをクリックすることにより、その商品を選択できます。
チェック ボックス (CheckBox ) コントロールの既定のプロパティは、Value プロパティです。
チェック ボックス (CheckBox ) コントロールの既定のイベントは、Click イベントです。
メモ リスト ボックス (ListBox ) コントロールも、オプションの選択によりチェック マークを持たせることができ
ます。目的に応じて、チェック ボックス (CheckBox ) コントロールをグループ化して使う代わりにリスト ボック
ス (ListBox ) コントロールを使用できます。
コンボ ボックス (ComboBox) コントロール
リスト ボックス (ListBox ) コントロールとテキスト ボックス (TextBox ) コントロールの機能を組み合わせたコ
ントロールです。このため、テキスト ボックス (TextBox ) コントロールのように新しい値を直接入力すること
も、リスト ボックス (ListBox ) コントロールのように選択肢の一覧から値を選択することもできます。
解説
コンボ ボックス (ComboBox ) コントロールをデータ ソースに連結した場合、ユーザーが入力または選択した
値は、データ ソースに挿入されます。複数列のコンボ ボックス (ComboBox ) コントロールをデータ ソースに
連結した場合、どの値がそのデータ ソースに格納されるかは、BoundColumn プロパティによって決まりま
コンボ ボックス内のリストは、データの行により構成されます。各行は複数列にすることもでき、列見出しを
設定することもできます。アプリケーションによっては、列見出しをサポートしていない場合や、機能が制限さ
れている場合があります。
コンボ ボックス (ComboBox ) コントロールの既定のプロパティは、Value プロパティです。
コンボ ボックス (ComboBox ) コントロールの既定のイベントは、Change イベントです。
メモ 常に複数行のリストを表示させる場合は、コンボ ボックス (ComboBox ) コントロールではなく、リスト
ボックス (ListBox ) コントロールを使ってください。コンボ ボックス (ComboBox ) コントロールを使って、選択
をリスト内の項目のみに限定したい場合には、ドロップダウンしたリスト ボックスとなるようにコンボ ボックス
(ComboBox ) コントロールの Style
【 Visual Basic フォームについて 】
P.5
コマンド ボタン (CommandButton) コントロール
処理の開始、終了、中断など一連の処理を行います。
解説
コマンド ボタン (CommandButton ) コントロールが行う処理は、コマンド ボタン (CommandButton ) コント
ロールの Click イベントに割り当てられたマクロまたはイベント プロシージャの内容により決定されます。た
とえば、ほかのフォームを開くコマンド ボタン (CommandButton ) コントロールを作成できます。コマンド ボタ
ン (CommandButton ) コントロールは、テキスト、ピクチャ、またはその両方を表示することもできます。
コマンド ボタン (CommandButton ) コントロールの既定のプロパティは、Value プロパティです。
コマンド ボタン (CommandButton ) コントロール
Controls コレクション
あるオブジェクト内のすべてのコントロールが含まれるコレクションです。
解説
オブジェクトの Controls コレクション内の各コントロールは、それぞれ重複しないインデックス値 (整数または
文字列) を持っています。コレクション内の先頭のコントロールのインデックス値は 0 で、2 番目のコントロー
ルのインデックス値は 1 になります。この値は、コントロールがコレクションに追加された順序を表します。
文字列のインデックスは、そのコントロールの名前です。コントロールの Name プロパティも、コントロールの
名前を指定しています。
Controls コレクションは、コレクション内のすべてのコントロールに対する操作やコントロールの数の取得、
プロパティの設定に使用できます。たとえば、特定のフォームの Controls コレクションに対して操作を行うこ
とで、すべてのコントロールの Height プロパティを指定した値に設定することができます。
メモ コレクション内のすべてのコントロールに対する操作には、For Each ...Next ステートメント