ユーザーフォームで、複数コンボボックスを連動させる方法をご紹介します。
「コンボボックス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秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説
リンク