Bom dia!
Se eu entendi bem o arquivo, e sua dúvida, acho que isso resolve
Code:
Dim lastRow As Long
Private Sub cbx_eqto_Change()
preencherProtecao cbx_Grupo.ListIndex, cbx_eqto.Value
End Sub
Private Sub cbx_Grupo_Change()
preencherEquipamentos cbx_Grupo.ListIndex
End Sub
Private Sub UserForm_Initialize()
Let lastRow = Plan1.Range(Plan1.Cells(Plan1.Rows.Count, 1).Address).End(xlUp).Row
cbx_Grupo.List = Plan1.Range("A2:A" & lastRow).Value
End Sub
Sub preencherEquipamentos(grupo As Integer)
Dim rng As Range
Dim r
Dim dic As Object
Select Case grupo
Case Is = 0: grupo = 2
Case Is = 1: grupo = 4
Case Is = 2: grupo = 6
End Select
Let lastRow = Plan1.Range(Plan1.Cells(Plan1.Rows.Count, grupo).Address).End(xlUp).Row
Set rng = Plan1.Range(Plan1.Cells(2, grupo).Address, Plan1.Cells(lastRow, grupo).Address)
Set dic = CreateObject("Scripting.Dictionary")
For Each r In rng
If Not dic.Exists(r.Value) Then
dic.Add r.Value, dic.Count + 1
End If
Next
With cbx_eqto
.Clear
.List = dic.Keys
End With
End Sub
Sub preencherProtecao(grupo As Integer, equipamento As String)
Dim rng As Range
Dim r
Dim dic As Object
Select Case grupo
Case Is = 0: grupo = 3
Case Is = 1: grupo = 5
Case Is = 2: grupo = 7
End Select
Let lastRow = Plan1.Range(Plan1.Cells(Plan1.Rows.Count, grupo).Address).End(xlUp).Row
Set rng = Plan1.Range(Plan1.Cells(2, grupo).Address, Plan1.Cells(lastRow, grupo).Address)
Set dic = CreateObject("Scripting.Dictionary")
For Each r In rng
If Not dic.Exists(r.Value) And r.Offset(0, -1).Value = equipamento Then
dic.Add r.Value, dic.Count + 1
End If
Next
With cbx_Protecao
.Clear
.List = dic.Keys
End With
End Sub
O código acima relaciona tudo com os dados que você mostrou no exemplo, caso mude as formas, logicamente o código vai mudar tbm....espero que ajude!
Postado : 14/07/2018 7:48 am