Excel VBAのユーザーフォームにおいて、リストボックス(ListBox)の選択項目とワークシート上のセルを連動させるためのサンプルコードと手順を解説します。
この記事でできること
ユーザーフォームのリストボックスで項目をクリックした際に、対応するワークシート上のセルを自動的に選択状態(アクティブ)にすることができます。
想定環境・前提条件
- Microsoft Excel 2016以降(Microsoft 365推奨)
- Windows環境
- VBE(Visual Basic Editor)の基本操作ができること
完全なコード
ユーザーフォームのモジュールに以下のコードを記述します。フォームは必要に応じてモーダレス(ShowModal = False)に設定して利用してください。
Private Sub ListBox1_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ListBox1
If .ListCount < 1 Then Exit Sub
If .ListIndex < 0 Then Exit Sub
' リストの2列目(インデックス1)に保持しているセルアドレスを選択する
ws.Range(.List(.ListIndex, 1)).Select
End With
End Sub
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim r As Range
Dim i As Integer: i = 0
Set ws = ThisWorkbook.Sheets("Sheet1")
' リストボックスを2列構成にする(0列目:表示名、1列目:セルアドレス)
Me.ListBox1.ColumnCount = 2
' 1つ目の項目設定
Set r = ws.Range("A1")
ListBox1.AddItem r.Value
ListBox1.List(i, 1) = r.Address
i = i + 1
' 2つ目の項目設定
Set r = ws.Range("B1")
ListBox1.AddItem r.Value
ListBox1.List(i, 1) = r.Address
i = i + 1
' 3つ目の項目設定
Set r = ws.Range("C2")
ListBox1.AddItem r.Value
ListBox1.List(i, 1) = r.Address
i = i + 1
End Sub
実行手順
- Excelブックを開き、[Alt] + [F11] キーを押してVBEを開きます。
- [挿入] > [ユーザーフォーム] を選択し、フォームに
ListBox1を配置します。 - 上記コードをユーザーフォームのコードウィンドウに貼り付けます。
- 「Sheet1」のセル A1、B1、C2 に任意の値を入力します。
- ユーザーフォームを実行し、リストボックスの項目をクリックして指定セルが選択されることを確認します。
公式情報・一次情報
Microsoft Learn – VBA オブジェクト モデルのリファレンス
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月12日
- 変更ブロック引用タグとなっていたVBAコード部分を正しいコードブロック形式に変更しました。
- 追加リストボックスとセルを連動させるVBAサンプルの前提条件と実行手順を追加しました。
