1) To ThisWorkbook module
Sheet2 module![]()
Private Sub Workbook_Open() Run "sheet2.worksheet_activate" End Sub
![]()
Option Explicit Private dic As Object Private x As Variant Private Sub Worksheet_Activate() Dim a, i As Long, w Const Combo As String = "Size,Weight,Connection" x = Split(Combo, ",") Set dic = CreateObject("Scripting.Dictionary") dic.CompareMode = 1 a = Sheets("Connections").Cells(1).CurrentRegion.Value For i = 2 To UBound(a, 1) If Not dic.exists(CStr(a(i, 1))) Then Set dic(CStr(a(i, 1))) = CreateObject("Scripting.Dictionary") dic(CStr(a(i, 1))).CompareMode = 1 End If If Not dic(CStr(a(i, 1))).exists(CStr(a(i, 2))) Then Set dic(CStr(a(i, 1)))(CStr(a(i, 2))) = CreateObject("Scripting.Dictionary") dic(CStr(a(i, 1)))(CStr(a(i, 2))).CompareMode = 1 End If If Not dic(CStr(a(i, 1)))(CStr(a(i, 2))).exists(CStr(a(i, 3))) Then ReDim w(1 To 2, 1 To 1) Else w = dic(CStr(a(i, 1)))(CStr(a(i, 2)))(CStr(a(i, 3))) ReDim Preserve w(1 To 2, 1 To UBound(w, 2) + 1) End If w(1, UBound(w, 2)) = a(i, 4) w(2, UBound(w, 2)) = i dic(CStr(a(i, 1)))(CStr(a(i, 2)))(CStr(a(i, 3))) = w Next With Me.ComboBoxConnectionBrand .ListFillRange = "" .List = dic.keys End With End Sub Private Sub ComboBoxConnectionBrand_Change() ClearCombo 0 If Me.ComboBoxConnectionBrand.ListIndex > -1 Then Me.OLEObjects("ComboBoxsize").Object.List = dic(Me.ComboBoxConnectionBrand.Value).keys End If End Sub Private Sub ComboBoxSize_Change() ClearCombo 1 If Me.ComboBoxSize.ListIndex > -1 Then Me.OLEObjects("ComboBoxWeight").Object.List = _ dic(Me.ComboBoxConnectionBrand.Value)(Me.ComboBoxSize.Value).keys End If End Sub Private Sub ComboBoxWeight_Change() ClearCombo 2 If Me.ComboBoxWeight.ListIndex > -1 Then Me.OLEObjects("ComboBoxConnection").Object.Column = _ dic(Me.ComboBoxConnectionBrand.Value)(Me.ComboBoxSize.Value)(Me.ComboBoxWeight.Value) End If End Sub Private Sub ClearCombo(s As Long) Dim i As Long For i = s To UBound(x) Me.OLEObjects("Combobox" & x(i)).Object.Clear Next End Sub











LinkBack URL
About LinkBacks
Register To Reply
Bookmarks