コンボボックスのメソッド・プロパティ各種コントロール Show
2022.07.09 2014.05.10 このページではコンボボックスの主なメソッドおよびプロパティについて解説します。 コンボボックスはドロップダウンリストから項目を選択できるだけでなく、テキストボックスと同様にユーザーから任意の文字列を受け付けることもできるコントロールです。ユーザーからの文字列入力を受け付けずに、単純なドロップダウンリストとして使用することも可能です。 説明済みプロパティコントロールオブジェクトが異なるだけで前のページで説明した内容と同じプロパティについては説明を割愛させていただきます。以下のリンク先をご覧になってください。 ※説明の中に出てくるコントロールオブジェクトは適宜読み換えてください。
リスト項目の追加と削除コンボボックスはテキストボックスと同様に Value や Text プロパティを使用して文字列の取得および設定が可能ですが、これらのプロパティに文字列を設定してもリストに追加されるわけではありません。 ⇒リストに項目を追加するには AddItem メソッドを使用する方法と、RowSource プロパティにリスト項目が入力されたワークシートのセル範囲を指定する方法があります。AddItem メソッドで追加したリスト項目は Clear メソッドや RemoveItem メソッドで削除することが可能です。 AddItem メソッドAddItem メソッドはリストに項目を追加します。引数 Index を指定することでリストの途中に項目を追加することも可能です。この際、リスト項目の位置がゼロからはじまることに注意してください。 構文 cbo.AddItem [ Item ] [, Index ] ※上記構文中の cbo はコンボボックスオブジェクトのインスタンスを表します(以下、同様)。
AddItem メソッドを使用したリストの追加は、通常ユーザーフォームの初期処理(ユーザーフォームのイベント)で実施します。 コードの記述例1With ComboBox1 .AddItem "国語" .AddItem "数学" .AddItem "理科" .AddItem "社会" End With 表示イメージ1リストに4項目追加された様子コードの記述例2リストの途中に項目を挿入したい場合は引数 Index にその位置を指定します。次の例では先頭から2番目の位置(引数 Index は1)に”英語”を追加する例です。 'リストの上から2番目に挿入 ComboBox1.AddItem "英語", 1 表示イメージ2項目が挿入された様子Clear メソッドClear メソッドはリストに追加された項目をすべて削除します。 RemoveItem メソッドRemoveItem メソッドはリストに追加された項目を1つ削除します。AddItem メソッドと同じく、引数 Index に指定する位置はゼロからはじまります。
コードの記述例'リストの上から2番目の項目を削除
ComboBox1.RemoveItem 1
削除前と削除後のイメージ⇒RowSource プロパティRowSource プロパティを使用すると、ワークシートのセルに入力された項目をリストに追加することができます。 これ以降、下図のワークシート”科目リスト”が存在する前提で説明を行います。 説明の前提となるワークシートプロパティウィンドウでの設定RowSource プロパティにワークシート名とセル範囲を入力します。 RowSourceプロパティにワークシート名とセル範囲を入力コードの記述例1ComboBox1.RowSource = "科目リスト!A1:A4" 表示イメージ1コンボボックスリスト表示結果RowSource プロパティでリスト項目を設定した場合、AddItem、Clear、RemoveItem メソッドによる項目の追加および削除は行えません。例えば、AddItem メソッドを使用すると次のようなエラーが発生します。 RowSourceプロパティで設定したリストに追加しようとした時のエラーコードの記述例2RowSource プロパティで設定したリスト項目を変更したい場合は、その参照先であるセルの値を変更する必要があります。また、必要に応じてセルの参照範囲も変更します。 'ワークシートへ新規項目の追加 With Worksheets("科目リスト") .Range("A2").Insert (xlDown) .Range("A2").Value = "英語" End With 'セル参照範囲の変更 ComboBox1.RowSource = "科目リスト!A1:A5" セルのInsertメソッド Withステートメント リスト変更前後の表示イメージ⇒リスト項目の数(ListCount プロパティ)コンボボックスに追加したリスト項目数は ListCount プロパティで取得可能です。このプロパティは取得のみ可能で、プロパティウィンドウからは設定できません。 選択項目のインデックス(ListIndex プロパティ)コンボボックスのリスト内で現在選択されている項目のインデックスは ListIndex プロパティで取得可能です。リスト内の項目が選択されていない場合は -1 が返ってきます。 このプロパティは値を設定することも可能で、ゼロ以上の数値を設定するとそのインデックスに対応した項目がコンボボックス内に表示されます。-1 を設定すると未選択状態(コンボボックス内は空欄)になります。 注意点として、値を設定するときは当然リスト項目が追加済みである必要があります。また、このプロパティはプロパティウィンドウからは設定できません。 コードの記述例'コンボボックスにリスト先頭項目を表示 ComboBox1.ListIndex = 0 '選択されている項目のインデックスを表示 MsgBox "ListIndex = " & ComboBox1.ListIndex 表示イメージ以下の図はコンボボックスリスト内の選択項目をいろいろ変えて、そのときのインデックス値をメッセージボックスで表示させてみた結果です。 リスト表示最大数(ListRows プロパティ)コンボボックスのリストをドロップダウンしたときに表示されるリスト項目の最大値は ListRows プロパティで設定可能です。リスト内の項目数がこの最大値を超えると、リスト右端にスクロールバーが表示され、スクロールできるようになります。 プロパティウィンドウでの設定ListRows プロパティに、ゼロより大きい数値を入力します。 ListRows プロパティに、ゼロより大きい数値を入力 コードの記述例ComboBox1.ListRows = 3 表示イメージListRows = 3 で、リスト項目が4つのリストをドロップダウンした場合にスクロールバーが表示されます。 リストの幅(ListWidth プロパティ)コンボボックスのリストをドロップダウンしたときのリスト幅は ListWidth プロパティで設定可能です。リスト1行の中には複数の列(カラム)を設定することが可能です。以下の例ではリスト1行に1列という前提の説明となっています。 リスト幅のイメージプロパティウィンドウでの設定ListWidth プロパティに、リスト幅の長さを単位(pt、cmなど)付きで入力します。また、列(カラム)が1の場合、リスト幅はカラム幅に等しくなるはずなので、ColumnWidths プロパティにも同じ値を入力してください。これをしないと、リストに水平スクロールバーが表示されてしまいます。 ListWidthとColumnWidthsプロパティに、長さを入力コードの記述例ComboBox1.ListWidth = "40 pt" ComboBox1.ColumnWidths = "40 pt" 表示イメージリスト幅を40ptに設定したときの様子リスト幅を狭くする場合、垂直スクロールバーが表示されてリスト項目が隠れてしまわないように注意してください。 コンボボックスのスタイル(Styles プロパティ)コンボボックスのスタイルはStyles プロパティで設定します。スタイルと言っても、外見がかわるわけではなく、ユーザーからの文字入力を受け付けるかどうかが変わるだけです。 プロパティウィンドウでの設定Styles プロパティの右端をクリックし、ドロップダウンリストから希望のスタイルに対応する定数を設定します。 Stylesプロパティに希望のスタイルに対応する定数を設定コードの記述例'ドロップダウンリストとしてのみ使用
ComboBox1.Style = fmStyleDropDownList
DropButtonStyle定数一覧
ドロップボタンのスタイル(DropButtonStyle プロパティ)ドロップボタンのスタイルはDropButtonStyle プロパティで設定することができます。 各コントロールの概要 VBA ListIndexの初期値は?構文:オブジェクト.ListIndex = num
このプロパティの既定値は「-1」で、この-1は「未選択の状態」なので指定する番号は「0→先頭」「1→2番目」「2→3番目」…となっており、本サンプルは2番目の文字列「エレクトロニカ」を既定にするので「1」を指定しています。
コンボボックスのプルダウン表示は?設置したコンボボックスを右クリックし、[コントロールの書式設定]を選択します。 [コントロール]タブで入力範囲を「F2:F8」、リンクするセルを「A5」としました。 ドロップダウンリストの行数は「8」としました。 コンボボックスの[▼]ボタンをクリックすると、ドロップダウンリストが表示されます。
VBA リストボックス 選択されているかどうか?ListIndex【リストインデックス】プロパティ
ListIndex【リストインデックス】が返す値はリストの先頭行を「0」として、上から順番に数えた行番号です。 リストが選択されていないときは「-1」を返すのでこれを利用すると項目が選択されているかどうかを調べることができます。 値の取得と設定ができます。
|