【ExcelVBA・マクロ】ユーザーフォームのコンボボックスにリスト(選択肢)を追加する方法|AddItem・Listの使い方【コピペOK】

ユーザーフォームのコンボボックスにリスト(選択肢)を追加 ExcelVBA

ユーザーフォームのコンボボックスにリスト(選択肢)を追加する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 が便利
  • セルから動的に作成できる
  • 入力ミス防止に効果的

コンボボックスのリストを使いこなせるようになると、ユーザーフォームの完成度が一気に上がります。
実務でも非常に重要なテクニックなので、ぜひ活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました