ID非公開さん
2022/5/19 15:39
2回答
ExcelのVBAについて ユーザーフォームでコンボボックス1で選んだ部署(部)から 絞ってコンボボックス2部署(課)、さらに絞って コンボボックス3に社員名を表示させたいです。
ExcelのVBAについて ユーザーフォームでコンボボックス1で選んだ部署(部)から 絞ってコンボボックス2部署(課)、さらに絞って コンボボックス3に社員名を表示させたいです。 Excelシートでは、A列に所属部署(〇部)、B列に〇課C列以降に社員名を入れています。 また、コンボ1が空白でコンボ2だけでも絞れるようにしたいと思っています。 コードをご教示いただけますと幸いです。 よろしくお願いいたします。
Visual Basic・54閲覧・100
ベストアンサー
こうなりました。結局、部署と課の連携は必要ないようです(部署毎に課がないため)。 課のコンボボックスから選択した後、ダブルクリックでコンボボックス3の氏名欄が特定されます。 ※添付画像参照(位置関係を参照してください) ※CommandButton1は機能させていません。 ■フォームモジュール 'ダブルクリックイベント Private Sub ComboBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim i As Long, j As Long, k As Integer, rn As Integer, index As Integer Dim nadata As Variant, na As Variant Dim sel As String index = UserForm1.ComboBox2.ListIndex If index <> -1 Then sel = UserForm1.ComboBox2.List(index) End If With Worksheets("Sheet1") For j = 3 To 12 If InStr(.Cells(1, j), sel) > 0 Then rn = .Cells(Rows.Count, j).End(xlUp).Row ReDim nadata(rn - 1) For i = 2 To rn nadata(k) = .Cells(i, j) k = k + 1 Next i For Each na In nadata ComboBox3.AddItem na Next ComboBox3.ListIndex = 0 End If Next j End With End Sub '終了 Private Sub CommandButton2_Click() Unload UserForm1 End Sub '初期設定 Private Sub UserForm_Initialize() Dim i As Integer, k As Integer, n As Integer, rb As Integer, rk As Integer Dim budata As Variant, busyo As Variant Dim kadata As Variant, kaname As Variant With Worksheets("Sheet1") rb = Cells(Rows.Count, 1).End(xlUp).Row ReDim budata(rb - 1) For i = 2 To 5 budata(n) = .Cells(i, 1) n = n + 1 Next i For Each busyo In budata ComboBox1.AddItem busyo Next ComboBox1.ListIndex = 0 rk = Cells(Rows.Count, 2).End(xlUp).Row ReDim kadata(rk - 1) For i = 2 To rk kadata(k) = .Cells(i, 2) k = k + 1 Next i For Each kaname In kadata ComboBox2.AddItem kaname Next ComboBox2.ListIndex = 0 End With End Sub ■標準モジュール Sub test() UserForm1.Show vbModeless End Sub
質問者からのお礼コメント
ありがとうございました。 助かりました。
お礼日時:5/24 12:00