【ExcelVBA・マクロ】ユーザーフォームのリストボックスを2列表示にする方法|ColumnCount・ColumnWidthsの使い方【コピペOK】

ユーザーフォームのリストボックスを2列表示 ExcelVBA

ユーザーフォームのリストボックスを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列表示にできるようになると、ユーザーフォームの表現力が大きく向上します。
業務アプリのような画面も作れるようになるため、ぜひ活用してみてください。

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

コメント

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