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