
ExcelVBA リストボックスに複数列を表示することで、1つの項目に関連する複数の情報(例: 商品名と価格、社員名と部署など)を同時に表示できます。これにより、情報の視認性と操作性を向上させることができます。使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA リストボックスに複数列を表示利用シーン
以下のようなシーンで利用で表示します。
1.データの表示
複数の関連情報を一括してユーザーに提示する場合(例: 商品リスト、顧客情報など)。
2.選択肢の管理
単一選択や複数選択で、各項目の詳細を確認できるようにする。
3.マスタ管理
例えば社員番号、氏名、部署名などを一覧で管理し、選択後の処理を簡単にする。
Excel VBA リストボックスに複数列を表示する|使い方
1. リストボックスの設定
・リストボックスの「ColumnCount」プロパティを設定します(列数を指定)。デフォルトは 1 列ですが、複数列表示するには必要な列数を設定します。
・「ColumnWidths」プロパティで各列の幅を調整します(幅を 0 にすると非表示になります)。
2. データの追加
・各列にデータを追加する場合は、 AddItem や List プロパティを使用します。
Excel VBA リストボックスに複数列を表示する|ポイント
・列幅の調整
列幅を設定しないと、デフォルトではすべて均等に配置されます。必要に応じて調整してください。
・データの結合
リストボックスは列ごとに分割されたデータを扱いますが、列同士の関連を考慮して正しくデータを配置する必要があります。
・選択時のデータ取得
特定の列のデータを取得する場合、 List プロパティで指定する必要があります。
Excel VBA リストボックスに複数列を表示サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
フォームモジュール(ユーザーフォームで複数列のリストボックスを使用)
1. リストボックス(例: ListBox1 )を配置します。
2. リストボックスの「ColumnCount」プロパティを 2 以上に設定します。
3. 必要に応じて「ColumnWidths」プロパティで各列の幅を調整します(例: 50pt;100pt )
Option Explicit
Private Sub UserForm_Initialize()
' リストボックスの列数を設定
Me.ListBox1.ColumnCount = 2
' 列幅を設定(単位はポイント)
Me.ListBox1.ColumnWidths = "100pt;150pt"
' データを追加(AddItemで1行ずつ追加)
Me.ListBox1.AddItem "商品A"
Me.ListBox1.List(0, 1) = "100円"
Me.ListBox1.AddItem "商品B"
Me.ListBox1.List(1, 1) = "200円"
Me.ListBox1.AddItem "商品C"
Me.ListBox1.List(2, 1) = "300円"
End Sub
Private Sub CommandButton1_Click()
Dim selectedItem As String
Dim selectedPrice As String
' 選択された行のデータを取得
If Me.ListBox1.ListIndex <> -1 Then
selectedItem = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) ' 商品名
selectedPrice = Me.ListBox1.List(Me.ListBox1.ListIndex, 1) ' 価格
MsgBox "選択された商品: " & selectedItem & vbCrLf & "価格: " & selectedPrice, vbInformation
Else
MsgBox "項目が選択されていません。", vbExclamation
End If
End Sub
標準モジュール(シート上でActiveXリストボックスを使う(複数列対応))
1. シート上にActiveXリストボックス( ListBox1 )を配置します。
2. プロパティウィンドウで ColumnCount を 2 以上に設定し、必要なら ColumnWidths も調整
Option Explicit
Sub PopulateListBox()
Dim ws As Worksheet
Dim listBox As Object
' シートとリストボックスを取得
Set ws = ThisWorkbook.Sheets(1)
Set listBox = ws.OLEObjects("ListBox1").Object
' リストボックス設定
listBox.ColumnCount = 2
listBox.ColumnWidths = "100pt;150pt"
' データを追加
listBox.AddItem "社員A"
listBox.List(0, 1) = "営業部"
listBox.AddItem "社員B"
listBox.List(1, 1) = "総務部"
listBox.AddItem "社員C"
listBox.List(2, 1) = "開発部"
End Sub
Sub GetSelectedData()
Dim ws As Worksheet
Dim listBox As Object
Dim selectedName As String
Dim selectedDept As String
' シートとリストボックスを取得
Set ws = ThisWorkbook.Sheets(1)
Set listBox = ws.OLEObjects("ListBox1").Object
' 選択された行のデータを取得
If listBox.ListIndex <> -1 Then
selectedName = listBox.List(listBox.ListIndex, 0) ' 名前
selectedDept = listBox.List(listBox.ListIndex, 1) ' 部署
MsgBox "選択された社員: " & selectedName & vbCrLf & "部署: " & selectedDept, vbInformation
Else
MsgBox "項目が選択されていません。", vbExclamation
End If
End Sub
リストボックスで複数の関連情報を1つの選択肢として表示・管理する。 列幅やデータの整合性に注意して利用してください。
上記のコードはコピペで動作するので、初心者でも安心して利用できます。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。