Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Collection - Ordem alfabética [RESOLVIDO]
-
- Colaborador
- Mensagens: 24
- Registrado em: Ter Nov 16, 2010 6:33 pm
Collection - Ordem alfabética [RESOLVIDO]
Bom dia pessoal,
É possível fazer um collection num combobox ordenando na sua visualização? Tenho uma série de registros por nome, mas na visualização fica difícil com o modo collection que possuo.
Agradeço desde já a atenção.
Abs.
É possível fazer um collection num combobox ordenando na sua visualização? Tenho uma série de registros por nome, mas na visualização fica difícil com o modo collection que possuo.
Agradeço desde já a atenção.
Abs.
Editado pela última vez por Rafa - Info em Dom Mar 06, 2011 10:22 am, em um total de 1 vez.
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Collection - Ordem alfabética
Bya Sistema de Busca :
Ordenar Dados nos Controles
viewtopic.php?f=6&t=416&p=2497&hilit=ordenar#p2497
[]s
Ordenar Dados nos Controles
viewtopic.php?f=6&t=416&p=2497&hilit=ordenar#p2497
[]s
-
- Colaborador
- Mensagens: 24
- Registrado em: Ter Nov 16, 2010 6:33 pm
Re: Collection - Ordem alfabética
Bom exemplo Mauro. Parabéns!
Mas então, tentei implementar no Collection e não consegui, neste teu exemplo ele repete os nomes e estou precisando usar sem repetições e de forma organizada.
Veja os dois sendo chamados no Private Sub UserForm_Initialize()
Como integrar os dois?
Abs.
Mas então, tentei implementar no Collection e não consegui, neste teu exemplo ele repete os nomes e estou precisando usar sem repetições e de forma organizada.
Veja os dois sendo chamados no Private Sub UserForm_Initialize()
Código: Selecionar todos
Private Sub Collection_ComboBox1()
Dim ULTLINHA, K As Long
Dim OCOLLECTION As New Collection
Dim VARVALUE As Variant
ULTLINHA = Worksheets("Plan1").Range("A65536").End(xlUp).Row
On Error Resume Next
For Each VARVALUE In Worksheets("Plan1").Range("A2:A" & ULTLINHA)
OCOLLECTION.Add VARVALUE, VARVALUE
Next
For K = 1 To OCOLLECTION.Count
ComboBox1.AddItem OCOLLECTION.Item(K)
Next K
End Sub
Código: Selecionar todos
Private Sub Ordenar_ComboBox1()
Dim iForsta, iSista As Integer
Dim i, j As Integer
Dim sTemp As String
Dim sCol As Integer
Dim ULTLINHA As Long
ULTLINHA = Worksheets("Plan1").Range("A65536").End(xlUp).Row
Set lastRow = Worksheets("Plan1").Range("A2:A" & ULTLINHA)
'adiciona dados
With ComboBox1
.ColumnCount = 2
'Me.ComboBox1.AddItem Plan1.Range("A" & i)
.List = lastRow.Cells.Value
End With
iForsta = 0
iSista = ComboBox1.ListCount - 1
For i = iForsta To iSista - 1
For j = i + 1 To iSista
If ComboBox1.List(i, sCol) > ComboBox1.List(j, sCol) Then
sTemp = ComboBox1.List(j, sCol)
ComboBox1.List(j, sCol) = ComboBox1.List(i, sCol)
ComboBox1.List(i, sCol) = sTemp
End If
Next j
Next i
End Sub
Abs.
- joseA
- Jedi
- Mensagens: 1048
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Re: Collection - Ordem alfabética
Não sei se entendi, vc quer carregar o ComboBox com registros únicos e ordenados...
Se for tente assim:
Se for tente assim:
Código: Selecionar todos
Private Sub UserForm_Initialize()
Call RegistrosUnicos
Call Ordenar
End Sub
Sub RegistrosUnicos()
Dim ULTLINHA, K As Long
Dim OCOLLECTION As New Collection
Dim VARVALUE As Variant
ULTLINHA = Worksheets("Plan1").Range("A65536").End(xlUp).Row
Me.ComboBox1.Clear
On Error Resume Next
For Each VARVALUE In Worksheets("Plan1").Range("A2:A" & ULTLINHA)
OCOLLECTION.Add VARVALUE, VARVALUE
Next
For K = 1 To OCOLLECTION.Count
ComboBox1.AddItem OCOLLECTION.Item(K)
Next K
End Sub
Sub Ordenar()
Dim iForsta, iSista As Integer
Dim i, j As Integer
Dim sTemp As String
iForsta = 0
iSista = ComboBox1.ListCount - 1
For i = iForsta To iSista - 1
For j = i + 1 To iSista
If ComboBox1.List(i) > ComboBox1.List(j) Then
sTemp = ComboBox1.List(j)
ComboBox1.List(j) = ComboBox1.List(i)
ComboBox1.List(i) = sTemp
End If
Next j
Next i
End Sub
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Collection - Ordem alfabética
Rafa, o link que sugeri como o proprio nome diz é referente a "Ordenar Dados nos Controles" que foi o que você solicitou, e não carrega-los com valores únicos, era somente para aproveitar a rotina de Ordenação.
Poderíamos fazer de diversas formas, mas o que o JOSÉ postou eu acho o ideal, pois mantemos a rotina Sub Ordenar() independente que apesar de na mesma estar se referindo ao ComboBox1 podemos com alguns ajustes de Variáveis deixa-la para ser utiizada em outros Controles "ComboBox".
[]s
Poderíamos fazer de diversas formas, mas o que o JOSÉ postou eu acho o ideal, pois mantemos a rotina Sub Ordenar() independente que apesar de na mesma estar se referindo ao ComboBox1 podemos com alguns ajustes de Variáveis deixa-la para ser utiizada em outros Controles "ComboBox".
[]s
-
- Colaborador
- Mensagens: 24
- Registrado em: Ter Nov 16, 2010 6:33 pm
Re: Collection - Ordem alfabética
Maravilha pessoal, o exemplo do JoseA deu certo, tava quebrando a quebeça em deixar tudo numa única rotina, mas blza, funcionou 100%.
Então Mauro, não citei no corpo da mensagem pois achei que me referindo ao "objeto Collection" já seria sem repetições, e colocando ele em ordem alfabética. Concerteza a citação sua com o exemplo do JoseA chegou a este resultado, que era o pretendido.
O conhecimento de ambos estão acima e continuem assim, sempre colaborando.
Obrigado.
Abs.
Então Mauro, não citei no corpo da mensagem pois achei que me referindo ao "objeto Collection" já seria sem repetições, e colocando ele em ordem alfabética. Concerteza a citação sua com o exemplo do JoseA chegou a este resultado, que era o pretendido.
O conhecimento de ambos estão acima e continuem assim, sempre colaborando.
Obrigado.
Abs.
- joseA
- Jedi
- Mensagens: 1048
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Re: Collection - Ordem alfabética
Se vc quer juntar as duas rotinas em uma bastaria acrescentar as variáveis da 2ª à 1ª e acrescentar a rotina que ordena no final...Rafa - Info escreveu:...tava quebrando a quebeça em deixar tudo numa única rotina...
Mas o resultado seria o mesmo.