【Excel VBA】リストボックスで選択中の項目を取得する方法

当ページのリンクには広告が含まれている可能性があります。
リストボックス選択中文字列

こんにちは、ユーキです。

今回は、リストボックスで選択中の項目を取得する方法を紹介します。

目次

リストボックスの値の取得方法

単一行選択のリストボックスと、複数選択可能のリストボックス、単一列、複数列で取得方法が異なります。基本の考え方が理解できれば、どんなリストボックスでも選択中の項目を取得することができるようになります。
それでは、取得方法を見ていきましょう。

単一行選択のリストボックス

単一列(単一カラム)

次のようなリストボックスから選択中の項目を取得するとします。

単一列単一行選択のリストボックス

リストボックスの名前を「ListBox1」とすると、以下のコードで取得可能です。メッセージボックスに選択した項目をメッセージボックスに表示させます。

Private Sub CommandButton1_Click()
    ’未選択時はNULL。エラーになります。
    MsgBox Me.ListBox1.Value
    ’未選択時は空文字("")となります。
    MsgBox Me.ListBox1.Text
End Sub

実行結果は以下のようになります。

実行結果

複数列(複数カラム)

複数列あるリストボックスの場合、1列目の値を取得するのであれば、単一列のリストボックスと同じやり方で取得できます。

2列目以降の値を取得したい場合、別の手段をとることになります。

選択行を特定し、選択行データから列数を指定して取得する形となります。取得した結果をメッセージボックスに表示するようコードを書いてみます。

Private Sub CommandButton1_Click()
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) = True Then
            ’0~始まるので、2列目の指定は1となる。
            MsgBox Me.ListBox1.List(i, 1)
        End If
    Next
End Sub

まず、ListBox1.ListCountでリストボックスが何行あるかを取得します。その行数分、繰り返し処理を行います(Fo~Next)。

次に、ListBox1.Selected(i)で対象行が選択されているかどうか判断します。Trueが帰ってくれば選択中と判断をします。対象行のデータの取得はList(row, col)で指定をします。行、列ともに0始まりですので、2列目の値を取得したい場合は、1を指定します。

複数行選択可能のリストボックス

複数列(複数カラム)の指定と同じ方法で取得することになるため、割愛します。

まとめ

今回は、リストボックスで選択中の項目を取得する方法を紹介しました。

Point
  • 単一列であれば、Valueプロパティ、またはTextプロパティで取得可能
  • 複数列の場合、1行ずつ判断が必要。
  • リストボックスからデータの値を取得するのはListプロパティで指定をする

少しでもお役に立てば、幸いです。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅好き職業プログラマ。文系大学卒業後、ITソフトウエア開発会社に勤務してプログラミング言語を学ぶ。現在は転職し、プロジェクトマネージャ的ポジションで生産管理システムの開発にあたる。
得意言語は、VB、VB.NET、C#.NET、Java、SQLなど。

目次