リストボックスのこんな使い方

以前、リストボックスの変わった使い方を見たことがある。
f:id:Infoment:20200928220859p:plain

変わっていると言っても、私が変わっていると思っただけで、実は
一般的なのかもしれない。例えば、こんな感じだ。

f:id:Infoment:20200928221630p:plain

Userformの中央にあるのはリストボックスで、表示する列数は1だ。
しかしこのリストボックスのリストとして、二次元配列を充てることが
出来てしまう。

Private Sub UserForm_Initialize()
    Dim ListArray(2, 1) As Variant
        ListArray(0, 0) = "りんご": ListArray(0, 1) = "100"
        ListArray(1, 0) = "みかん": ListArray(1, 1) = "150"
        ListArray(2, 0) = "ばなな": ListArray(2, 1) = "200"
        
        ListBox1.List = ListArray
End Sub

1列目が品名で、2列目が単価のイメージだ。そして、表示ボタンの
クリックイベントに、このように設定する。

Private Sub CommandButton1_Click()
    Dim i As Long
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) Then
                MsgBox ListBox1.List(i, 1)
                Exit For
            End If
        Next
End Sub

すると、リストボックスで選択した値について、リストボックスに表示
されない2列目の値を取得することができる。

f:id:Infoment:20200928222053p:plain

実際の使い処としては、例えばファイル名のみを1列目として表示し、
非表示の2列目にそのフルパスを置いておく、などが考えられる。

色んな使い方があるもんだと、感心した次第です。

参考まで。