ユーザーフォーム 複数コンボボックス連動させるVBA 動画あり

vba-複数コンボボックスを連動-アイキャッチ ExcelVBA

ユーザーフォームで、複数コンボボックスを連動させる方法をご紹介します。

「コンボボックス1」と「コンボボックス2」を作成し、二つを連動させるVBAを作りました。

動画で動作確認ができます👇

ユーザーフォーム作成

ユーザーフォームを作成します。


 

Excelシート

「Sheet1」にマクロボタンを設置します。


 

以下コードを標準モジュール「Module1」に入力して、
ボタンをクリックしたときに、ユーザーフォームが開くようにします。


Sub ボタン1_Click()
    UserForm1.Show vbModeless
End Sub

 

マクロコードを「Module1」に入力した画面


 

マクロコードを入力

マクロコードを「UserForm1」に入力します。


Option Explicit

Dim Target As String

Private Sub ComboBox1_Change()
'ComboBox1が変化したとき

    'ComboBox1で選択したListIndexを変数代入
    Target = ComboBox1.ListIndex
    
    'ComboBox1に連動した値をComboBox2に自動表示
    ComboBox2.ListIndex = Target

End Sub

Private Sub ComboBox2_Change()
'ComboBox2が変化したとき

    'ComboBox2で選択したListIndexを変数代入
    Target = ComboBox2.ListIndex
    
    'ComboBox2に連動した値をComboBox1に自動表示
    ComboBox1.ListIndex = Target

End Sub

Private Sub UserForm_Initialize()
'ユーザーフォームを開いたときに実行される

Dim LastRow As Long
Dim i As Long

    'Sheet1の最終行を取得
    LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

    '2~最終行までループ
    For i = 2 To LastRow

        'ComboBox1にA列のセル値を追加
        ComboBox1.AddItem Sheets("Sheet1").Cells(i, 1)
        
        'ComboBox2にB列のセル値を追加
        ComboBox2.AddItem Sheets("Sheet1").Cells(i, 2)
    Next i

End Sub

 

マクロコードを入力する場所「UserForm1」


 

動作

ユーザーフォームを開くと、左側のコンボボックスにA列の値、
右側のコンボボックスにB列の値が表示されます。

「氏名」に連動する「住所」を表示する

左側のコンボボックス(ComboBox1)から氏名を選択します。


 

右側のコンボボックスに、氏名に連動した住所が自動表示されます。


 

左側のコンボボックス(ComboBox1)で、別の氏名を選択してみます。


 

連動した住所が自動表示されます。


 

「住所」に連動する「氏名」を表示する

右側のコンボボックス(ComboBox2)で、住所を選択します。


 

連動した氏名が自動表示されます。


 
 
この記事がお役に立ちますと幸いです🍀
 
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
 

【VBAユーザーフォーム】何ができるの?:使用例34選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説