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


ここではコマンドボタンを3個作成しました。


フレームを追加
フレームを追加します ホーム上にツールボックスから フレームを追加して設置します。


フォーム上でドラッグしてリストを二つ入れるためのフレームを作成してください


フレームの中にリストボックスを追加
次にツールボックスからリストボックスをクリックしてフォーム上でドラッグ


リストボックスのコード
リストボックスを2個追加します。


リストボックス1には ユーザーフォームをアクティブにした時に既にリストが表示されている状態にしておきましょう。それにはユーザーフォームにコードを記入します。


別シートのセル指定
データは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に記述したコードによってリストが表示されていることを確認できます。


続いて、VBE に戻り リストボックス1をダブルクリックしてください。 リストボックスをを リストボックス1をチェンジした時のコードを記述しましょう。


Select Caseで複数の条件分岐
Select Caseでリスボックス1に表示されたテキストによって、3通りに分けています。


最初に、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に表示されるリストが変更されることが確認できます。


次回は、 ListBox2で選択した内容で、発行日と在庫の有り・なしを表示させるようにします。お疲れ様でした。