コンボボックスを設置する
■ComboBoxをフォームにはりつける
■コンボボックスは幅を少し長めにセットしてください。
コンボボックスを使った動作の概要
■コンボボックスのリストに氏名データベースの情報をセットする
■コンボのリストから適当な氏名をクリックしたら、その氏名の人の登録番号をメッセージボックスを使って表示するだけです。
コンボボックスに値をセットするプロシージャ
Private Sub comboItemIn() 'コンボボックスのリストに氏名情報を追加する ' '氏名データベース領域を取得 Dim max As Long Dim r As Integer With Sheet1 'データベース領域の行数を取得 max = .Range("A1").CurrentRegion.Rows.Count Me.ComboBox1.Clear For r = 2 To max '登録番号と氏名、よみ を一行の文字列に合成して登録 Me.ComboBox1.AddItem .Cells(r, "A") & "■" & .Cells(r, "B") & "▲" & .Cells(r, "C") Next r Me.ComboBox1.ListRows = r End With End Sub
Sub comboItemIn()を呼び出す側
■フォームを開くときに諸設定コードを格納しているInitializeプロシージャから呼び出しています
下図一番下の赤枠部分です。
■もう一ヶ所、氏名を登録するコマンドボタンをクリックしたときにも、その新しく登録した氏名もリストに加える必要があるのでSub comboItemIn()を呼び出す必要があります。
下図一番下の赤枠部分です。
3個の氏名情報を結合して追加
赤マーカーのAddItemがコンボボックスに値を追加する命令です
黄マーカーの部分が3個の氏名情報を結合して追加される値です。
下図’が実際のコンボボックスのリストが開いた状態です。
■実際のプログラムコードです
コンボボックスのリストのどれかをクリックしたときの処理
■デザインモードでComboBox1をダブルクリックするとChangeイベントのサブプロシージャのブロックが挿入されますので、その中にメッセージボックスを表示するコードを書き込みます。
■Val関数の特徴。引数の文字列の先頭から1文字ずつ調べて数値に変換できなくなったら変換を止めます。以下にその例を書いています。
■ComboBox1.List() は、コンボボックスのリストをテキストで表示する関数です。関数ですからカッコに引数を指定します。
引数にはComboBox1.ListIndexを指定します。
ListIndexはこの場合リストのどの行をクリックしたのかを示すプロパティーです。
X = Val( .List( .ListIndex ) )
.List( .ListIndex )・・・・> ”1■23ですか” だった場合
X = Val( “1■23ですか” )は 1を返すことになります。
X には1が入っています
つまり上図の場合はコンボボックスでリストをクリックしたときの氏名の属する行の登録番号をメッセージボックスに表示します。
下図はその様子を表します。
コンボボックスの解説はここまでにします
コメント