Boa tarde, eu tenho um formulário que tem 10 combobox que tem a mesma listagem.
Acontece que faço um array da listagem e coloco em ordem alfabética, já que os itens são cadastrados pelo usuário.
Desta forma eu uso uma rotina pra colocar em ordem alfabética e popular o combobox, mas eu queria coloca-la em um loop para preencher todos os combobox.
Lembrando que cada combobox tem o nome ordenado do tipo, cb_dyn1, cb_dyn2.
Não estou conseguindo referenciar os nomes no objeto, como faço?
Por favor, não sei mais o que fazer!
Private Sub cb_disciplina_Change()
'Define Range do material
Dim rangedisciplina As Range
Set rangedisciplina = Worksheets("DISCIPLINAS").Range("A1:H20")
Dim i As Integer
Dim lim As Integer
Dim cb_dyna As Object
lim = 14
For i = 2 To lim
epi = VLookupValues(cb_disciplina.Value, rangedisciplina, i, False)
If epi <> "" Then
cb_dyna.Clear
'Populando Combobox Dinamicamente
Dim ws As Worksheet
Dim ilinha As Integer
Dim ulinha As Range
Dim nlinha As Integer
Dim vlinha As String
Set ws = Worksheets("CADASTRO")
Set ulinha = ws.Range("C6:C1000")
nlinha = ulinha.Count
For ilinha = 6 To nlinha
If Trim(ws.Range("C" & ilinha)) <> "" Then
vlinha = Trim(ws.Range("C" & ilinha).Value)
cb_dyna.AddItem vlinha
End If
Next ilinha
Dim arrItems As Variant
Dim arrTemp As Variant
Dim intOuter As Long
Dim intInner As Long
arrItems = cb_dyna.List
For intOuter = LBound(arrItems, 1) To UBound(arrItems, 1)
For intInner = intOuter + 1 To UBound(arrItems, 1)
If arrItems(intOuter, 0) > arrItems(intInner, 0) Then
arrTemp = arrItems(intOuter, 0)
arrItems(intOuter, 0) = arrItems(intInner, 0)
arrItems(intInner, 0) = arrTemp
End If
Next intInner
Next intOuter
'Limpando Combobox
cb_dyna.Clear
'Adicionando o array ordenado
For intOuter = LBound(arrItems, 1) To UBound(arrItems, 1)
cb_dyna.AddItem arrItems(intOuter, 0)
Next intOuter
newArrItems = cb_dyna.List
cb_dyna.Visible = True
End If
Next i
End Sub
Postado : 13/02/2014 12:18 pm