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

長野 透
書いた人 長野 透
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーランスの長野です。

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

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

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

・コンボボックスとは
・コンボボックスの呼び出し方
・コンボボックスのリストの初期化
・コンボボックスの値の取得

など基本的な内容から、

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

など応用的な内容についても解説していきます。

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

コンボボックスとは?

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

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

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

combobox05

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

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

combobox01

combobox02

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

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

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

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

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


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

長野 透

長野 透

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