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


コメント