リストボックスやコンボボックスの連携について説明します
コンボボックス1 が変更されたとき、コンボボックス2 のリスト内容を コンボボックス1 の選択内容によって自動的に変更すること
例えばコンボボックス1 で[書籍]を選択するとコンボボックス2 に [文庫][専門書][図鑑]が表示されるようにします
A B C D E 1 2 文房具 バインダ 文庫 マウス 3 書籍 色鉛筆 専門書 ディスプレイ 4 OA機器 筆箱 図鑑 コンピュータ 5 ボールペン USBメモリ 6 キーボード
Sub USFormShow() ' ユーザーフォームの表示 UserForm1.show End Sub
Option Explicit
Private Sub UserForm1_Click()
End Sub
Private Sub ComboBox1_Change()
' ComboBox1 が変化した時の処理
Dim si As Integer
With UserForm1
.ComboBox2.Text = ""
si = .ComboBox1.ListIndex ' ComboBox1 の何番目が選択されたかを得る
Select Case si
Case 0
' 0番が選択されていたらComboBox2 の内容をC列から作成する
.ComboBox2.RowSource = "Sheet3!C2:C6"
Case 1
' 1番が選択されていたらComboBox2 の内容をD列から作成する
.ComboBox2.RowSource = "Sheet3!D2:D6"
Case 2
' 2番が選択されていたらComboBox2 の内容をE列から作成する
.ComboBox2.RowSource = "Sheet3!E2:E6"
End Select
End With
End Sub
Private Sub ComboBox2_Change()
' ComboBox2 が変化した時の処理
With UserForm1
If .ComboBox2.Text <> "" Then
MsgBox .ComboBox1.Text & " " & .ComboBox2.Text
End If
End With
End Sub
Private Sub UserForm_Activate()
' ComboBox がアクティブの時の処理
With UserForm1
.ComboBox1.RowSource = "Sheet3!A2:A6"
.ComboBox2.RowSource = "Sheet3!C2:C6"
End With
End Sub
Sub ComboBox1_Change() コンボボックス1 が変化したとき、選択された内容に従って、 コンボボックス2 のリストの内容をセットアップし直します。 Sub ComboBox2_Change() ここはMsgBoxで表示させているだけです、不要なら削除してOK です。 Sub UserForm_Activate() ここはコンボボックス1 のリストの内容をセットアップして、 コンボボックス2 のリストの内容を仮にセットアップしています。
コンボボックスを制御するには AddItem を使った方法もありますが今回は省略しました