コンボボックスのメソッドおよびプロパティ(項目の追加と削除、項目インデックスなど)について説明します。
HOME | 更新履歴 | ご利用上の注意事項 | FAQ | プライバシーポリシー | サイトマップ | Excel VBA 質問掲示板
日付
累計
本日
累計
本日
:
:
:
:
:
アクセス上位ページ
- コンボボックス
- テキストファイル読込
- セルの書式(背景色・パターン)
- AutoFilter メソッド
- Dir関数
- テキストファイル新規書込
- InStr関数
- InputBoxメソッド
- Sort メソッド
- マクロ有効ブックの保存と設定
- 比較演算子 ( Like も含む)
- テキストボックス
- FileDialogオブジェクト@
- ワークシートの数
- FileDialogオブジェクトA
- セルの書式(保護)
- Hidden プロパティ
- ワークシート関数によるカウント処理
- Split関数
- オブジェクト変数と Set
- オプションボタン
- OpenTextFile メソッド
- セルの書式(表示形式)
- チェックボックス
- LBound、UBound関数
- ラベル
- リストボックス
- FSOによるファイルコピー
- プロシージャの呼び出し
- ステップ実行
最近の更新内容
- 2016/5/7 ページ追加 1.(7)-n.PrintPreview メソッド
- 2015/12/13 ページ追加 5.(2)-i.トグルボタン
- 2015/10/18 『比較演算子 ( Like も含む)』内容修正
1.(7)-o.PrintOut メソッド
1.(7)-p.印刷ヘッダー、フッターの設定
5.(2)-j.スクロールバー
5.(2)-k.スピンボタン
5.(2)-l.イメージ
Excel VBA ≫ 5.ユーザーフォーム - 各種コントロール解説 ≫ (2)-e.コンボボックス
コンボボックスのメソッドおよびプロパティ
このページではコンボボックスの主なメソッドおよびプロパティについて解説します。
コンボボックスはドロップダウンリストから項目を選択できるだけでなく、 テキストボックスと同様にユーザーから任意の文字列を受け付けることもできるコントロールです。 既定のプロパティはテキストボックスと同じ Value プロパティとなっています。 ユーザーからの文字列入力を受け付けずに、単純なドロップダウンリストとして使用することも可能です。
このページで説明するコンボボックスのメソッド、および、プロパティは以下のとおりです。 コントロールオブジェクトが異なるだけで前のページで説明した内容と同じプロパティについては説明を割愛させていただきます。 かわりにリンクをまとめてありますのでリンク先をご覧になってください。
リストに項目を追加するには AddItem メソッドを使用する方法と、 RowSource プロパティにリスト項目が入力されたワークシートのセル範囲を指定する方法があります。 AddItem メソッドで追加したリスト項目は Clear メソッドや RemoveItem メソッドで削除することが可能です。
<コンボボックスにリスト項目が追加された様子>
リストの途中に項目を挿入したい場合は引数 Index にその位置を指定します。
次の例では先頭から2番目の位置(引数 Index は1)に"英語"を追加する例です。
<項目が挿入された様子>
<コンボボックスリスト表示結果>
RowSource プロパティで設定したリスト項目を変更したい場合は、その参照先であるセルの値を変更する必要があります。
また、必要に応じてセルの参照範囲も変更します。
<RowSource プロパティで設定したリスト項目に新規項目を追加する例>
このプロパティは値を設定することも可能で、ゼロ以上の数値を設定するとそのインデックスに対応した項目がコンボボックス内に表示されます。 -1 を設定すると未選択状態(コンボボックス内は空欄)になります。 値を設定するときは、当然リスト項目が追加済みである必要があります。 このプロパティはプロパティウィンドウからは設定できません。
以下の図はコンボボックスリスト内の選択項目をいろいろ変えて、そのときのインデックス値をメッセージボックスで表示させてみた結果です。
<RowSource = 3 で、リスト項目が4つのリストをドロップダウンした時の表示結果>
<リスト幅を40ptに設定したときの表示結果>
コンボボックスはドロップダウンリストから項目を選択できるだけでなく、 テキストボックスと同様にユーザーから任意の文字列を受け付けることもできるコントロールです。 既定のプロパティはテキストボックスと同じ Value プロパティとなっています。 ユーザーからの文字列入力を受け付けずに、単純なドロップダウンリストとして使用することも可能です。
このページで説明するコンボボックスのメソッド、および、プロパティは以下のとおりです。 コントロールオブジェクトが異なるだけで前のページで説明した内容と同じプロパティについては説明を割愛させていただきます。 かわりにリンクをまとめてありますのでリンク先をご覧になってください。
- このページで説明するメソッド・プロパティ
- リスト項目の追加と削除
(AddItem、Clear、RemoveItem メソッド、RowSource プロパティ) - リスト項目の数(ListCount プロパティ)
- 選択項目のインデックス(ListIndex プロパティ)
- リスト表示最大数(ListRows プロパティ)
- リストの幅(ListWidth プロパティ)
- コンボボックスのスタイル(Styles プロパティ)
- ドロップボタンのスタイル(DropButtonStyle プロパティ)
- 説明済みのプロパティ(前のページへのリンク)
※説明の中に出てくるコントロールオブジェクトは適宜読み換えてください。 - 高さ・幅の設定(Width、Height プロパティ)・・・共通プロパティ
- 背景色の設定(BackColor プロパティ)・・・共通プロパティ
- 有効状態の設定(Enabled プロパティ)・・・共通プロパティ
- 可視状態の設定(Visible プロパティ)・・・共通プロパティ
- コントロールチップの表示(ControlTipText プロパティ)・・・共通プロパティ
- 文字のフォント・色の設定(Font、ForeColor プロパティ)・・・ラベル
- 枠線の設定(BorderStyle、SpecialEffect プロパティ)・・・ラベル
- 文字列の配置(AutoSize、TextAlign プロパティ)・・・ラベル
- テキストボックス内の文字列(Value、Text プロパティ)・・・テキストボックス
- IMEモード(IMEMode プロパティ)・・・テキストボックス
- 最大文字数(MaxLength プロパティ)・・・テキストボックス
- セレクションマージン(SelectionMargin プロパティ)・・・テキストボックス
リスト項目の追加と削除
コンボボックスはテキストボックスと同様に Value や Text プロパティを使用して文字列の取得および設定が可能ですが、 これらのプロパティに文字列を設定してもリストに追加されるわけではありません。![]() |
⇒ | ![]() |
リストに項目を追加するには AddItem メソッドを使用する方法と、 RowSource プロパティにリスト項目が入力されたワークシートのセル範囲を指定する方法があります。 AddItem メソッドで追加したリスト項目は Clear メソッドや RemoveItem メソッドで削除することが可能です。
- AddItem メソッド AddItem メソッドはリストに項目を追加します。引数 Index を指定することでリストの途中に項目を追加することも可能です。 この際、リスト項目の位置がゼロからはじまることに注意してください。
【構文】
cbo.AddItem [ Item ] [, Index ]
cbo.AddItem [ Item ] [, Index ]
※上記構文中の cbo はコンボボックスオブジェクトのインスタンスを表します(以下、同様)。
引数名 | 省略 | 説明 |
---|---|---|
Item | ○ | リスト項目に追加する文字列を指定します。 省略すると空白行が追加されます。 |
Index | ○ | 新しい項目を挿入する位置を示す整数値を指定します。 位置は先頭項目がゼロとなります。 省略すると末尾に追加されます。 |
AddItem メソッドを使用したリストの追加は、通常ユーザーフォームの初期処理(Initialize イベント⇒ユーザーフォームのイベント)で実施します。
<Initialize イベント内でのコンボボックスリスト追加例>
With ComboBox1 .AddItem "国語" .AddItem "数学" .AddItem "理科" .AddItem "社会" End With
<コンボボックスにリスト項目が追加された様子>

'リストの上から2番目に挿入
ComboBox1.AddItem "英語", 1
<項目が挿入された様子>

- Clear メソッド Clear メソッドはリストに追加された項目をすべて削除します。
- RemoveItem メソッド RemoveItem メソッドはリストに追加された項目を1つ削除します。 AddItem メソッドと同じく、引数 Index に指定する位置はゼロからはじまります。
【構文】
cbo.Clear ※引数なし
cbo.Clear ※引数なし
【構文】
cbo.RemoveItem Index
cbo.RemoveItem Index
引数名 | 省略 | 説明 |
---|---|---|
Index | × | 削除する項目の位置を示す整数値を指定します。 位置は先頭項目がゼロとなります。 この引数は必ず指定します。 |
<リスト項目の削除例>
'リストの上から2番目の項目を削除
ComboBox1.RemoveItem 1
削除前 | 削除後 | |
---|---|---|
![]() |
⇒ | ![]() |
- RowSource プロパティ RowSource プロパティを使用すると、ワークシートのセルに入力された項目をリストに追加することができます。
これ以降、下図のワークシート"科目リスト"が存在する前提で説明を行います。

<プロパティウィンドウでの初期値設定例>
RowSource プロパティにワークシート名とセル範囲を入力します。

ComboBox1.RowSource = "科目リスト!A1:A4"
<コンボボックスリスト表示結果>

RowSource プロパティでリスト項目を設定した場合、AddItem、Clear、RemoveItem メソッドによる項目の追加および削除は行えません。例えば、AddItem メソッドを使用すると次のようなエラーが発生します。

<RowSource プロパティで設定したリスト項目に新規項目を追加する例>
'ワークシートへ新規項目の追加 With Worksheets("科目リスト") .Range("A2").Insert (xlDown) .Range("A2").Value = "英語" End With 'セル参照範囲の変更 ComboBox1.RowSource = "科目リスト!A1:A5"
追加前 | 追加後 | |
---|---|---|
![]() |
⇒ | ![]() |
リスト項目の数
コンボボックスに追加したリスト項目数は ListCount プロパティで取得可能です。 このプロパティは取得のみ可能で、プロパティウィンドウからは設定できません。- ListCount プロパティ <リスト項目数をメッセージボックスに表示する例>
MsgBox "ListCount = " & ComboBox1.ListCount
コンボボックスのリスト項目 | 表示結果 | |
---|---|---|
![]() |
⇒ | ![]() |
選択項目のインデックス
コンボボックスのリスト内で現在選択されている項目のインデックスは ListIndex プロパティで取得可能です。 リスト内の項目が選択されていない場合は -1 が返ってきます。このプロパティは値を設定することも可能で、ゼロ以上の数値を設定するとそのインデックスに対応した項目がコンボボックス内に表示されます。 -1 を設定すると未選択状態(コンボボックス内は空欄)になります。 値を設定するときは、当然リスト項目が追加済みである必要があります。 このプロパティはプロパティウィンドウからは設定できません。
- ListIndex プロパティ <コードの記述例>
'コンボボックスにリスト先頭項目を表示 ComboBox1.ListIndex = 0 '選択されている項目のインデックスを表示 MsgBox "ListIndex = " & ComboBox1.ListIndex
以下の図はコンボボックスリスト内の選択項目をいろいろ変えて、そのときのインデックス値をメッセージボックスで表示させてみた結果です。
- リスト未選択時の場合のインデックス
- リスト先頭項目選択時の場合のインデックス
- リスト末尾(4項目目)選択時の場合のインデックス






リスト表示最大数
コンボボックスのリストをドロップダウンしたときに表示されるリスト項目の最大値は ListRows プロパティで設定可能です。 リスト内の項目数がこの最大値を超えると、リスト右端にスクロールバーが表示され、スクロールできるようになります。- ListRows プロパティ <プロパティウィンドウでの初期値設定例>
ListRows プロパティに、ゼロより大きい数値を入力します。

ComboBox1.RowSource = 3
<RowSource = 3 で、リスト項目が4つのリストをドロップダウンした時の表示結果>

リストの幅
コンボボックスのリストをドロップダウンしたときのリスト幅は ListWidth プロパティで設定可能です。 リスト1行の中には複数の列(カラム)を設定することが可能ですが、複数カラムの設定は別ページで行いたいと思っています。 以下の例ではリスト1行に1列という前提の説明となっています。- ListWidth プロパティ <プロパティウィンドウでの初期値設定例>

ListWidth プロパティに、リスト幅の長さを単位(pt、cmなど)付きで入力します。 また、列(カラム)が1の場合、リスト幅はカラム幅に等しくなるはずなので、ColumnWidths プロパティにも同じ値を入力してください。 これをしないと、リストに水平スクロールバーが表示されてしまいます。

ComboBox1.ListWidth = "40 pt" ComboBox1.ColumnWidths = "40 pt"
<リスト幅を40ptに設定したときの表示結果>

リスト幅を狭くする場合、垂直スクロールバーが表示されてリスト項目が隠れてしまわないように注意してください。
コンボボックスのスタイル
コンボボックスのスタイルはStyles プロパティで設定します。 スタイルと言っても、外見がかわるわけではなく、ユーザーからの文字入力を受け付けるかどうかが変わるだけです。- Styles プロパティ <プロパティウィンドウでの初期値設定例>
Styles プロパティの右端をクリックし、ドロップダウンリストから希望のスタイルに対応する定数を設定します。

'ドロップダウンリストとしてのみ使用
ComboBox1.Style = fmStyleDropDownList
定数 | 値 | 内容 |
---|---|---|
fmStyleDropDownCombo | 0 | 選択項目のリストを持つコンボ ボックスとして機能します。 編集領域に値を入力したり、選択項目のリストから値を選択することができます。 |
fmStyleDropDownList | 2 | ドロップダウンリストとして機能します。リストから値を選択しなければなりません。 |
ドロップボタンのスタイル
ドロップボタンのスタイルはDropButtonStyle プロパティで設定することができます。- DropButtonStyle プロパティ <プロパティウィンドウでの初期値設定例>
DropButtonStyle プロパティの右端をクリックし、ドロップダウンリストから希望のスタイルに対応する定数を設定します。

'ドロップボタンのスタイルを表示なしに設定
ComboBox1.DropButtonStyle = fmDropButtonStylePlain
定数 | 値 | 表示イメージ |
---|---|---|
fmDropButtonStylePlain | 0 | ![]() |
fmDropButtonStyleArrow | 1 | ![]() |
fmDropButtonStyleEllipsis | 2 | ![]() |
fmDropButtonStyleReduce | 3 | ![]() |
カテゴリ内ページ