ユーザーフォームのリストボックスを2列表示させるVBAコードをご紹介します。
- 1列だけでは情報が足りない
- IDと名称を同時に表示したい
- 一覧を見やすくしたい
このような場合は、リストボックスを2列表示にすることで解決できます。
複数の情報を同時に表示できるため、実務でも非常によく使われるテクニックです。
この記事では、リストボックスを2列にする方法を初心者向けに分かりやすく解説します。
この記事でできること
- リストボックスを2列表示にできる
- 列ごとの幅を調整できる
- セルデータを2列で表示できる
- 実務で使えるコードが分かる
基本:リストボックスを2列にするコード
まずは基本コードです。
Private Sub UserForm_Initialize()
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "50;120"
.AddItem "001"
.List(.ListCount - 1, 1) = "田中"
.AddItem "002"
.List(.ListCount - 1, 1) = "佐藤"
.AddItem "003"
.List(.ListCount - 1, 1) = "鈴木"
End With
End Sub
これで「コード+名前」の2列表示ができます。
コードのポイント解説
① ColumnCount(列数)
.ColumnCount = 2
表示する列数を指定します。
② ColumnWidths(列幅)
.ColumnWidths = "50;120"
列ごとの幅を指定します(単位はポイント)。
- 1列目 → 50
- 2列目 → 120
③ 2列目の値を設定
.List(.ListCount - 1, 1) = "田中"
追加した行の2列目に値を入れています。
セルのデータを2列で表示する方法
Excelのデータをそのまま表示する場合はこちらです。
Private Sub UserForm_Initialize()
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "50;120"
.List = Range("A1:B5").Value
End With
End Sub
A列とB列の内容がそのまま2列表示されます。
1列目を非表示にする方法(IDを隠す)
IDは表示せず、内部だけで使いたい場合はこちらです。
Me.ListBox1.ColumnWidths = "0;120"
これで1列目は非表示になります。
選択された値を取得する方法
2列の場合、列を指定して取得できます。
Dim id As String
Dim name As String
id = Me.ListBox1.Column(0)
name = Me.ListBox1.Column(1)
複数列+複数選択にする方法
複数選択も可能です。
Me.ListBox1.MultiSelect = fmMultiSelectMulti
これで複数項目を選択できるようになります。
実務でよくある使い方
- 社員番号+氏名
- 商品コード+商品名
- 部署コード+部署名
- 検索結果一覧の表示
「内部データ」と「表示用データ」を分けるのがポイントです。
よくあるエラーと対処法
① 2列目が表示されない
ColumnCountが正しく設定されているか確認してください。
② 列幅がおかしい
ColumnWidthsの設定を見直してください。
③ List設定でエラーになる
範囲が複数列になっているか確認してください。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- 列数は
ColumnCountで設定 - 列幅は
ColumnWidths - Listでまとめて設定できる
- 実務ではID+名称の表示が定番
リストボックスを2列表示にできるようになると、ユーザーフォームの表現力が大きく向上します。
業務アプリのような画面も作れるようになるため、ぜひ活用してみてください。


コメント