連動するリストボックスを作成

連動するリストボックスを作成
連動するリストボックスを作成

リンクユニット


マクロ 39回

Select Caseでリストの連動

前回はリストボックスを挿入するために、新規でフォームを作成しました。
2回目の今日はリストボックスを作成していきます
そして連動させるためのコードも記述します。 Select Caseで複数の条件分岐をするコードを記述します。
(サンプルファイルは、こちらから マクロ39回サンプルデータ

コマンドボタンを追加

VBE を開いて フォームにツールボックスからコマンドボタンを追加します フォーム上でドラッグしてサイズを指定してやります。
連動するリストボックスを作成マクロ1
ここではコマンドボタンを3個作成しました。
連動するリストボックスを作成マクロ2

フレームを追加

フレームを追加します ホーム上にツールボックスから フレームを追加して設置します。
連動するリストボックスを作成マクロ3
フォーム上でドラッグしてリストを二つ入れるためのフレームを作成してください
連動するリストボックスを作成マクロ4

フレームの中にリストボックスを追加

次にツールボックスからリストボックスをクリックしてフォーム上でドラッグ
連動するリストボックスを作成マクロ5

リストボックスのコード

リストボックスを2個追加します。
連動するリストボックスを作成マクロ6
リストボックス1には ユーザーフォームをアクティブにした時に既にリストが表示されている状態にしておきましょう。それにはユーザーフォームにコードを記入します。
連動するリストボックスを作成マクロ8

別シートのセル指定

データはSheet2にあるので、Worksheets("Sheet2").Range("A2").Valueと指定しています。
Private Sub UserForm_Activate()
  With ListBox1
    .AddItem Worksheets("Sheet2").Range("A2").Value
    .AddItem Worksheets("Sheet2").Range("A3").Value
    .AddItem Worksheets("Sheet2").Range("A4").Value
  End With
End Sub

フォームを表示するとリストボックス1に記述したコードによってリストが表示されていることを確認できます。
連動するリストボックスを作成マクロ9
続いて、VBE に戻り リストボックス1をダブルクリックしてください。 リストボックスをを リストボックス1をチェンジした時のコードを記述しましょう。
連動するリストボックスを作成マクロ7

Select Caseで複数の条件分岐

Select Caseでリスボックス1に表示されたテキストによって、3通りに分けています。
連動するリストボックスを作成マクロ10
最初に、ListBox2.Clearで、内容を消去しています。Select Caseでシリーズごとに ListBox2.Listに表示する内容を変えています。
Private Sub ListBox1_Change()
    ListBox2.Clear
    Select Case ListBox1.Text
        Case "伝説シリーズ"
         ListBox2.List = Worksheets("Sheet2").Range("B2:B11").Value
        Case "忘却探偵シリーズ"
         ListBox2.List = Worksheets("Sheet2").Range("B12:B21").Value
        Case "物語シリーズ"
         ListBox2.List = Worksheets("Sheet2").Range("B22:B46").Value
    End Select
End Sub
実行するとリスト1の選択によってリスト2に表示されるリストが変更されることが確認できます。
連動するリストボックスを作成マクロ11
次回は、 ListBox2で選択した内容で、発行日と在庫の有り・なしを表示させるようにします。お疲れ様でした。