【VBA】コンボボックスの使い方(ユーザーフォーム)
今回はユーザーフォームのコンボボックスの使い方を紹介します。
コンボボックスの追加方法から選択肢の追加方法まで画像付きで説明するので活用してみてください。
この記事では↓の項目が分かります。
- コンボボックスの追加方法
- 選択肢の追加方法
- リストに無い項目の入力を許可するか
- 初期値の設定方法
- 選択された値の取得方法
- コンボボックスとリストボックスの違い
コンボボックスの追加方法
コンボボックスは画像のようにツールボックス中のアイコンをクリックすることで追加ができます。
追加するとプルダウンの付いたコントロール(コンボボックス)が追加されます。
選択肢の追加方法 (Listプロパティ / AddItemメソッド)
選択肢の追加方法は2つがあります。
- Listプロパティ:選択肢を配列で一度に追加できます。
- AddItemメソッド:選択肢を1つずつ追加できます。
基本的に↓のように使い分けするのが良いと思います。
- ユーザーフォームの表示前に選択肢を追加したい⇒Listプロパティ
- ユーザーフォームの表示後にユーザーの操作によって選択肢を追加したい⇒AddItemメソッド
選択肢を配列で追加する (Listプロパティ)
Private Sub UserForm_Initialize()
Dim arr
arr = Array("選択肢1", "選択肢2", "選択肢3")
ComboBox1.List = arr
End Sub
Listプロパティを使うと配列を使って選択肢を一気に追加することができます。
ユーザーフォームを表示する前に選択肢をセットするときにはこの方法がおすすめです。
サンプルコードではUserForm_Initializeプロシージャで一気に選択肢を追加しています(UserForm_Initializeはユーザーフォームを表示する前に自動的に実行されるプロシージャです)
Array関数を使うと作成も修正も簡単に済ませることができます。
選択肢を1つずつ追加する (AddItemメソッド)
Private Sub UserForm_Initialize()
ComboBox1.AddItem "選択肢1"
ComboBox1.AddItem "選択肢2"
ComboBox1.AddItem "選択肢3"
End Sub
選択肢を1つずつ追加するにはAddItemメソッドを使います。
ユーザーフォームを表示した後、ユーザーの操作で選択肢を追加したりするときはこの方法を使います。(例えばボタンを押したら選択肢追加など)
選択肢の追加を禁止するか (Styleプロパティ)
コンボボックスでは選択肢の追加を禁止させることができます。
(デフォルトでは手入力で選択肢を追加することができます)
Styleプロパティの値を画像のようにfmStyleDropDownListにすると、選択肢の追加を禁止にできます。
初期値の設定方法 (Valueプロパティ)
Private Sub UserForm_Initialize()
Dim arr
arr = Array("選択肢1", "選択肢2", "選択肢3")
ComboBox1.List = arr
ComboBox1.Value = arr(0)
End Sub
初期値の設定にはValueプロパティを使用します。
ユーザーフォームを表示したときにValueプロパティで指定した値が初期候補として表示されます。
選択された値の取得方法 (Valueプロパティ)
Private Sub CommandButton1_Click()
MsgBox ComboBox1.Value 'コンボボックスの値をメッセージで表示
End Sub
選択された値の取得にもValueプロパティを使います。
画像のようにコンボボックスの他にコマンドボタンを追加します。
そしてサンプルコードのCommandButton1_Clickプロシージャを追加します。
この状態でユーザーフォームを実行すると、ボタンを押すとコンボボックスの値がメッセージボックスで表示することができます。
コンボボックスとリストボックスの違い
コンボボックスは選択肢が隠れている (プルダウン式)のに対して、リストボックスは選択肢が表示された状態になります。
また、コンボボックスは手入力による選択肢の追加ができますが、リストボックスではできません。