【ExcelVBA・マクロ】ユーザーフォームのリストボックスに値を挿入する方法|AddItem・Listの使い方【コピペOK】

ユーザーフォームのリストボックスに値を挿入 ExcelVBA

ユーザーフォームのリストボックスに値を挿入するVBAコードをご紹介します。

  • リストボックスに項目を表示したい
  • セルの内容を一覧で見せたい
  • 複数の候補をまとめて表示したい

このような場合は、VBAでリストボックスに値を挿入することで簡単に実現できます。
ユーザーフォームの使い勝手が大きく向上するため、実務でも非常によく使われるテクニックです。

この記事では、ユーザーフォームのリストボックスに値を挿入する方法を初心者向けに分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • リストボックスに項目を追加できる
  • 複数の値をまとめて表示できる
  • セル範囲の値をそのまま表示できる
  • 実務で使えるコードが分かる

基本:AddItemで値を追加する方法

まずは一番基本的な方法です。
リストボックスに1件ずつ値を追加していきます。

Private Sub UserForm_Initialize()

    Me.ListBox1.AddItem "りんご"
    Me.ListBox1.AddItem "みかん"
    Me.ListBox1.AddItem "バナナ"

End Sub

このコードを実行すると、フォームを開いたときにリストボックスへ3つの項目が表示されます。


コードのポイント解説

AddItemとは?

AddItem は、リストボックスに1件ずつ値を追加するための命令です。

ListBox1.AddItem "値"

シンプルで分かりやすく、初心者にも使いやすい方法です。


複数の値をループで追加する方法

項目数が多い場合は、ループ処理でまとめて追加すると便利です。

Private Sub UserForm_Initialize()

    Dim i As Long

    For i = 1 To 5
        Me.ListBox1.AddItem "項目" & i
    Next i

End Sub

これで「項目1」〜「項目5」が順番に追加されます。


セルの値をリストボックスに追加する方法

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.ListBox1.AddItem Cells(i, 1).Value
    Next i

End Sub

このコードでは、A列のデータを1行ずつリストボックスに追加しています。


Listプロパティでまとめて設定する方法

リストボックスにまとめて値を設定したい場合は、List プロパティを使う方法もあります。

Private Sub UserForm_Initialize()

    Me.ListBox1.List = Range("A1:A5").Value

End Sub

この方法なら、セル範囲のデータを一気にリストへ表示できます。


配列を使ってリストを設定する方法

セルではなく、VBA内で用意した配列を使う方法はこちらです。

Private Sub UserForm_Initialize()

    Dim arr

    arr = Array("東京", "大阪", "名古屋", "福岡")

    Me.ListBox1.List = arr

End Sub

固定の候補を表示したい場合に便利です。


リストを一度クリアしてから入れ直す方法

フォームを開き直したときに重複して表示されないようにするには、先にクリアしておくのが安全です。

Me.ListBox1.Clear

例えば次のように書きます。

Private Sub UserForm_Initialize()

    Me.ListBox1.Clear
    Me.ListBox1.AddItem "A"
    Me.ListBox1.AddItem "B"

End Sub

複数列の値を表示する方法

リストボックスは複数列表示にも対応しています。
例えばA列とB列を表示する場合はこちらです。

Private Sub UserForm_Initialize()

    With Me.ListBox1
        .ColumnCount = 2
        .ColumnWidths = "60;100"
        .List = Range("A1:B5").Value
    End With

End Sub

これで2列の一覧表のように表示できます。


実務でよくある使い方

  • 商品一覧の表示
  • 顧客名簿の候補表示
  • 部署名や担当者一覧の表示
  • 検索結果一覧の表示

特に「複数の候補から選ばせたい」場面では非常に便利です。


よくあるエラーと対処法

① リストが表示されない

コードを書く場所が UserForm_Initialize になっているか確認してください。

② 項目が重複して表示される

フォームを開くたびに追加されている可能性があります。
その場合は、先に Clear を実行してください。

③ セル範囲を設定したらうまく表示されない

List プロパティを使う場合、範囲の形に注意が必要です。
1列なら縦1列、2列なら2列の範囲を指定してください。

④ コードは正しいのにエラーになる

Webからコピーしたコードでは、全角記号や見えない特殊文字が混ざることがあります。
その場合は、エラーの出ている行を削除して手入力し直すと解決することがあります。


まとめ

  • 1件ずつ追加するなら AddItem
  • まとめて設定するなら List
  • セル範囲や配列からも値を入れられる
  • 実務では一覧表示や候補選択に便利

リストボックスに値を挿入できるようになると、ユーザーフォームの使い道が一気に広がります。
一覧表示や候補選択の場面でとても便利なので、ぜひ実務でも活用してみてください。

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

コメント

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