ユーザーフォームのコンボボックスにリスト(選択肢)を追加するVBAコードをご紹介します。
- コンボボックスに選択肢を入れたい
- リストを動的に追加したい
- セルの内容をそのまま表示したい
このような場合は、VBAでコンボボックスにリストを追加することで簡単に実現できます。
入力ミス防止や操作性向上にもつながるため、実務でも非常によく使われます。
この記事では、コンボボックスのリストを追加する方法を初心者向けに分かりやすく解説します。
この記事でできること
- コンボボックスにリストを追加できる
- 複数の項目を設定できる
- セルの値をリストに反映できる
- 実務で使えるコードが分かる
基本:AddItemでリストを追加する
まずは一番シンプルな方法です。
Private Sub UserForm_Initialize()
Me.ComboBox1.AddItem "未処理"
Me.ComboBox1.AddItem "進行中"
Me.ComboBox1.AddItem "完了"
End Sub
これでコンボボックスに3つの選択肢が表示されます。
コードのポイント解説
AddItemとは?
AddItem は、コンボボックスに1件ずつ項目を追加するメソッドです。
ComboBox1.AddItem "項目"
シンプルで分かりやすいのが特徴です。
配列でまとめて設定する方法
複数の項目を一気に設定する場合はこちらです。
Private Sub UserForm_Initialize()
Dim arr
arr = Array("未処理", "進行中", "完了")
Me.ComboBox1.List = arr
End Sub
この方法ならコードをスッキリ書けます。
セルの値をリストに追加する方法
Excelのセルを元にリストを作る場合はこちらです。
Private Sub UserForm_Initialize()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
Me.ComboBox1.AddItem Cells(i, 1).Value
Next i
End Sub
A列のデータがそのままリストになります。
重複を除いてリストを作る方法
同じ値を除外したい場合はDictionaryを使います。
Private Sub UserForm_Initialize()
Dim dict As Object
Dim i As Long
Dim lastRow As Long
Dim val As String
Set dict = CreateObject("Scripting.Dictionary")
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
val = Cells(i, 1).Value
If val <> "" Then
If Not dict.exists(val) Then
dict.Add val, Nothing
Me.ComboBox1.AddItem val
End If
End If
Next i
End Sub
これで重複のないリストが作れます。
初期選択(デフォルト値)を設定する
最初から選択状態にしたい場合はこちらです。
Me.ComboBox1.ListIndex = 0
0は最初の項目です。
リストをクリアして再設定する
再読み込みする場合は、先にクリアします。
Me.ComboBox1.Clear
実務でよくある使い方
- ステータス選択(未処理・完了など)
- 部署・担当者リスト
- マスタデータの選択
- 入力フォームの選択項目
入力ミスを防ぐために非常に重要な機能です。
よくあるエラーと対処法
① リストが表示されない
Initializeイベントに書いているか確認してください。
② 値が入らない
ComboBoxの名前が正しいか確認してください。
③ 空白が入る
セルに空白が含まれている可能性があります。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- リスト追加は
AddItem - 配列なら
Listが便利 - セルから動的に作成できる
- 入力ミス防止に効果的
コンボボックスのリストを使いこなせるようになると、ユーザーフォームの完成度が一気に上がります。
実務でも非常に重要なテクニックなので、ぜひ活用してみてください。

コメント