複数のリストボックスを連動


2つのリストボックスを連動する基本的な考え方をご紹介します。

たとえば、UserForm1にListBox1とListBox2という2つのリストボックスがあったとします。

ListBox1には「東京都」「横浜市」「名古屋市」というデータを表示し、そのListBox1で選択したデータに応じてListBox2に表示するデータを変化させます。

Private Sub UserForm_Initialize()
    With ListBox1
        .AddItem "東京都"
        .AddItem "横浜市"
        .AddItem "名古屋市"
        .ListIndex = 0
    End With
End Sub
Private Sub ListBox1_Click()
    With ListBox2
        .Clear
        Select Case ListBox1.List(ListBox1.ListIndex)
        Case "東京都"
            .AddItem "品川区"
            .AddItem "大田区"
            .AddItem "港区"
        Case "横浜市"
            .AddItem "中区"
            .AddItem "保土ヶ谷区"
            .AddItem "西区"
        Case "名古屋市"
            .AddItem "南区"
            .AddItem "中村区"
            .AddItem "瑞穂区"
        End Select
        .ListIndex = 0
    End With
End Sub

Sub ListBox1_Clickは、ListBox1をクリックするなどして、選択されているデータが変化したときに実行されるプロシージャです。プロシージャ内では、まずListBox2のデータをクリアします。これを忘れることが多いので注意してくださいね。あとは簡単です。ListBox1で選択されたデータに応じて、異なるデータをListBox2に登録してやればいいのです。最後にListBox2のListIndexに0を指定して、選択状態にするのもお忘れなく。