連動するリストボックスを作成
マクロ 39回
Select Caseでリストの連動
前回はリストボックスを挿入するために、新規でフォームを作成しました。
2回目の今日はリストボックスを作成していきます
そして連動させるためのコードも記述します。
Select Caseで複数の条件分岐をするコードを記述します。
(サンプルファイルは、こちらから
マクロ39回サンプルデータ)
コマンドボタンを追加
VBE を開いて フォームにツールボックスからコマンドボタンを追加します フォーム上でドラッグしてサイズを指定してやります。
![連動するリストボックスを作成マクロ1](macro/macro39_01.png)
![連動するリストボックスを作成マクロ1](macro/macro39_01.png)
ここではコマンドボタンを3個作成しました。
![連動するリストボックスを作成マクロ2](macro/macro39_02.png)
![連動するリストボックスを作成マクロ2](macro/macro39_02.png)
フレームを追加
フレームを追加します ホーム上にツールボックスから フレームを追加して設置します。
![連動するリストボックスを作成マクロ3](macro/macro39_03.png)
![連動するリストボックスを作成マクロ3](macro/macro39_03.png)
フォーム上でドラッグしてリストを二つ入れるためのフレームを作成してください
![連動するリストボックスを作成マクロ4](macro/macro39_04.png)
![連動するリストボックスを作成マクロ4](macro/macro39_04.png)
フレームの中にリストボックスを追加
次にツールボックスからリストボックスをクリックしてフォーム上でドラッグ
![連動するリストボックスを作成マクロ5](macro/macro39_05.png)
![連動するリストボックスを作成マクロ5](macro/macro39_05.png)
リストボックスのコード
リストボックスを2個追加します。
![連動するリストボックスを作成マクロ6](macro/macro39_06.png)
![連動するリストボックスを作成マクロ6](macro/macro39_06.png)
リストボックス1には ユーザーフォームをアクティブにした時に既にリストが表示されている状態にしておきましょう。それにはユーザーフォームにコードを記入します。
![連動するリストボックスを作成マクロ8](macro/macro39_08.png)
![連動するリストボックスを作成マクロ8](macro/macro39_08.png)
別シートのセル指定
データは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
![](macro/macro39_12.png)
フォームを表示するとリストボックス1に記述したコードによってリストが表示されていることを確認できます。
![連動するリストボックスを作成マクロ9](macro/macro39_09.png)
![連動するリストボックスを作成マクロ9](macro/macro39_09.png)
続いて、VBE に戻り リストボックス1をダブルクリックしてください。 リストボックスをを リストボックス1をチェンジした時のコードを記述しましょう。
![連動するリストボックスを作成マクロ7](macro/macro39_07.png)
![連動するリストボックスを作成マクロ7](macro/macro39_07.png)
Select Caseで複数の条件分岐
Select Caseでリスボックス1に表示されたテキストによって、3通りに分けています。
![連動するリストボックスを作成マクロ10](macro/macro39_10.png)
![連動するリストボックスを作成マクロ10](macro/macro39_10.png)
最初に、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](macro/macro39_11.png)
![連動するリストボックスを作成マクロ11](macro/macro39_11.png)
次回は、 ListBox2で選択した内容で、発行日と在庫の有り・なしを表示させるようにします。お疲れ様でした。