【VBA入門】コンボボックスの使い方(リストの初期化、値の取得)

コンボボックスって使っていますか?

コンボボックスとは、VBAのユーザーフォームで使えるパーツの一つで、いくつか登録したテキストの中から選択する場合に使用します

この記事では、コンボボックスについて

  • コンボボックスとは
  • コンボボックスの呼び出し方
  • コンボボックスのリストの初期化
  • コンボボックスの値の取得
  • コンボボックスのメソッドとプロパティ

など基本的な内容から、応用的な内容についても解説していきます。

今回はコンボボックスについて、わかりやすく解説します!

コンボボックスとは?

コンボボックスとは、VBAのユーザーフォームで使えるパーツの一つで、いくつか登録したテキストの中から選択する場合に使用します

コンボボックスがテキストボックスとリストボックスから構成されています。

テキストボックスに入力したテキストをリストボックスに追加したり、リストボックスから選択したテキストをテキストボックスに表示したりすることができます。

combobox05

コンボボックスの呼び出し方

コンボボックスは「ツールボックス」から選択して、フォームにドラッグ&ドロップします。

combobox01

combobox02

なお、ユーザーフォームの呼び出し方、使い方などは、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)
更新日 : 2019年4月22日

コンボボックスのリストの初期化

コンボボックスにリストを登録する方法についてみていきましょう。

AddItemメソッドの使い方

コンボボックスのリストにテキストを追加するには、AddItemメソッドを使います。

AddItemメソッドは以下のように記述します。

「[ ]」内は省略することができます。

引数Itemは、追加するテキストを指定します。引数Indexは、追加する項目の位置を指定します。省略された場合は、リストの末尾に追加されます。

コンボボックスから追加する方法

「コンボボックス」のテキストボックスから入力して、テキストを登録することができます。

「コマンドボタン」を押すとリストボックスに登録されるようにします。

この場合の処理の例は以下のとおりです。

Subプロシージャ「CommandButton1_Click()」は、「コマンドボタン」をダブルクリックすると自動で生成されます。

テキストを登録するために、AddItemメソッドを使用しています。AddItemメソッドの引数には、ComboBox1のTextプロパティで取得した値を指定しています。

combobox03

起動時に初期化する方法

また、あらかじめフォームが起動する際に、テキストを登録しておくこともできます。

以下のように記述します。

Subプロシージャ「UserForm_Initialize()」でフォーム起動時の処理を定義します。

combobox04

コンボボックスの値の取得

「コンボボックス」のリストの中から何が選ばれたか取得する方法について、みていきましょう。

ListIndexプロパティの使い方

「コンボボックス」のリストの中から何が選ばれたか取得するには、ListIndexプロパティを使います。

ListIndexプロパティは整数値を取得します。リストの最初の項目が選択されているときの値は0で、2番目の項目が選択されているときはの値は1になります。

サンプルコードで確認しましょう。

Subプロシージャ「ComboBox1_Change()」で値を取得する処理を定義します。

combobox06

Listメソッドの使い方

先ほどは、ListIndexプロパティを使って値を取得する方法についてみてきました。

今度は値ではなく、リストの項目テキストを取得する方法についてみていきましょう。

リストの項目テキストを取得するには、Listメソッドを使います。

引数Indexには、項目のインデックス番号を指定します。

この引数は省略可能で、省略するとリスト全体の項目が文字列配列として返されます。

サンプルコードで確認しましょう。

combobox07

コンボボックスのメソッドとプロパティ

コンボボックスのメソッドとプロパティについてみていきましょう。

メソッド一覧

メソッドについては以下のとおりです。

メソッド説明
AddItem [Item][, Index]リストに項目を追加します。
引数Itemで追加する文字列を指定します。省略すると空白行が追加されます。
引数Indexで追加する位置を指定します。省略すると末尾に追加されます。
Clearリストに追加された全ての項目を削除します。
RemoveItem Indexリストの項目を1つ削除します。
引数Indexで項目の位置を指定します。

プロパティ一覧

主なプロパティについては以下のとおりです。

プロパティ定数(値)説明
RowSourceExcelシートのセルに入力された項目をリストに追加
ListCountリストの項目数
ListIndex選択されている項目のインデックス番号を取得
ListRowsドロップダウンしたときに表示される項目の最大値を指定
項目数がこの値を超えると、スクロールバーが表示
ListWidthドロップダウンしたときのリストの幅を指定
StylesfmStyleDropDownCombo(0)編集領域に値を入力したり、リストから値を選択することが可能(既定値)
fmStyleDropDownList(2)リストボックスとして機能
DropButtonStylefmDropButtonStylePlain(0)ドロップボタンのスタイルを指定
fmDropButtonStyleArrow(1)
fmDropButtonStyleEllipsis(2)
fmDropButtonStyleReduce(3)

Clearメソッドでリストを削除

それではClearメソッドを使って、リストを全て削除する方法についてみていきましょう。

「コマンドボタン」を押すと「コンボボックス」のリストが全て削除されるように記述しています。

combobox08

まとめ

ここでは、コンボボックスの使い方について説明しました。

Excelのシート入力だけでは入力フォームとして不足と感じる場合は、ユーザーフォームで使いやすい入力フォームを作れるようになると作業時間や入力ミスの削減になります。

コンボボックスも使いこなすことができるように、この記事を何度も参考にして下さいね!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説