【ExcelVBA・マクロ】ユーザーフォームのリストボックスで選択された値を取得する方法|Value・ListIndex・複数選択対応【コピペOK】

ユーザーフォームのリストボックスで選択された値を取得 ExcelVBA

ユーザーフォームのリストボックスで選択されている値を取得するVBAコードをご紹介します。

  • 選択された値を取得したい
  • 選択内容をセルに書き込みたい
  • 複数選択された値をまとめて処理したい

このような場合は、リストボックスの選択値をVBAで取得することで解決できます。
フォーム入力を活用するうえで必須のテクニックです。

この記事では、リストボックスの選択値を取得する方法を初心者向けに分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 選択された値を取得できる
  • 選択内容をExcelに反映できる
  • 複数選択にも対応できる
  • 実務で使えるコードが分かる

基本:選択された値を取得する方法

一番シンプルなコードはこちらです。

Private Sub CommandButton1_Click()

    Dim val As String

    val = Me.ListBox1.Value

    MsgBox "選択された値:" & val

End Sub

これで、現在選択されている値を取得できます。


Valueプロパティとは?

ListBox1.Value は、選択されている項目の値を取得するプロパティです。

  • 単一選択の場合に使用
  • 選択された1件の値を返す

ListIndexで選択位置を取得する

選択されている位置(何番目か)を取得する方法です。

Dim idx As Long

idx = Me.ListBox1.ListIndex

MsgBox "選択位置:" & idx

ポイント:

  • 0 → 1番目
  • -1 → 未選択

ListIndexから値を取得する方法

ListIndexを使って値を取得することもできます。

Dim val As String

If Me.ListBox1.ListIndex <> -1 Then
    val = Me.ListBox1.List(Me.ListBox1.ListIndex)
End If

選択された値をセルに書き込む

実務でよく使うパターンです。

Private Sub CommandButton1_Click()

    Worksheets("Sheet1").Range("A1").Value = Me.ListBox1.Value

End Sub

未選択チェックを行う

エラー防止のために必須です。

If Me.ListBox1.ListIndex = -1 Then
    MsgBox "項目を選択してください。", vbExclamation
    Exit Sub
End If

複数選択された値を取得する方法

複数選択(MultiSelect)の場合はこちらです。

Private Sub CommandButton1_Click()

    Dim i As Long
    Dim result As String

    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) Then
            result = result & Me.ListBox1.List(i) & vbCrLf
        End If
    Next i

    MsgBox "選択された値:" & vbCrLf & result

End Sub

ポイント:

  • Selected(i) で選択状態を判定
  • 複数の値をまとめて取得可能

2列以上の場合の値取得

複数列のリストボックスでは、列を指定して取得します。

Dim id As String
Dim name As String

id = Me.ListBox1.Column(0)
name = Me.ListBox1.Column(1)

選択変更時に処理する方法

選択が変わった瞬間に処理したい場合はこちらです。

Private Sub ListBox1_Click()

    MsgBox "現在の選択:" & Me.ListBox1.Value

End Sub

実務での活用例

  • 選択したデータをExcelに反映
  • 複数選択による一括処理
  • 検索結果から対象を選択
  • 項目選択による処理分岐

リストボックスは「一覧+選択」の場面で非常に便利です。


よくあるエラーと対処法

① 値が取得できない

何も選択されていない可能性があります。

② ListIndexが-1になる

未選択状態です。チェックを入れてください。

③ 複数選択でValueが使えない

複数選択の場合は Selected(i) を使います。

④ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • 単一選択は Value
  • 位置は ListIndex
  • 複数選択は Selected(i)
  • 未選択チェックは必須

リストボックスの選択値を取得できるようになると、ユーザーフォームの活用範囲が一気に広がります。
入力データを元に処理を分けるなど、実務でも非常に重要なスキルなので、ぜひ使いこなしてみてください。

コメント

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