Qual é a lógica de ...
 
Notifications
Clear all

Qual é a lógica de ordem alfabética do VBA?

3 Posts
2 Usuários
0 Reactions
1,972 Visualizações
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Amigos, sou iniciante no mundo do VBA e muitas coisas ainda são um mistério para mim.
Atualmente precisei de um código para ordenar uma Combobox em ordem alfabética e facilmente encontrei em fóruns e dando uma "googada" por ai.
O código mais famoso e aparentemente, mais eficiente que eu encontrei foi esse:

    Dim contA As Integer
    Dim contP As Integer
    Dim menor As String
    Dim Elem As Integer

    Elem = ComboBox1.ListCount

    For contA = 0 To Elem - 2
    For contP = contA + 1 To Elem - 1
    If ComboBox1.List(contA) > ComboBox1.List(contP) Then
    menor = ComboBox1.List(contP)
    ComboBox1.List(contP) = ComboBox1.List(contA)
    ComboBox1.List(contA) = menor
    End If
    Next contP

    Next contA

Realmente, ele funciona!
Pega os dados de uma planilha e insere em uma combobox em ordem alfabética.
Seria perfeito, não fosse um detalhe muito importante:

Ele não organiza muito bem dados que contenham acentos gráfico e "Ç".
Ele entende, por exemplo, que "T" vem antes de "Ç", ou até mesmo que "Z", vêm antes de "Á"
Fiz um exemplo bem simples e estou anexando ele para que os amigos mais velhos em VBA possam me dar uma luz!

O que está errado?
A lógica de organização alfabética do VBA é essa mesma?
O código que estou tentando aplicar possui falhas?
Por favor, quem puder dar essa "aula" pra gente, iria ser de grande ajuda, pois não existe nada na internet que explique isso!

Um forte abraço e desde já agradeço aos amigos!

 
Postado : 28/06/2013 7:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se não me engano, é utilizado o numero do código ASCII, para esse ordenamento (veja o exemplo os números na coluna B da planilha exemplo.
Então a ordem está OK, baseado nesse critério. Contudo acrescentei uma função que tira acento, assim, creio que contorna esse "deficiência".
Veja se atende

 
Postado : 28/06/2013 8:47 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Reinaldo, simplesmente PERFEITO meu caro!
Acredito que eu tenha entendido!
Cada letra tem seu próprio código ASCII e a organização alfabética, se baseia nessa numeração.
Por isso que o Ç (por exemplo) ficava bem no final! O código ASCII é 199!
Maravilha!
Mais essa que eu aprendo!

Muito obrigado pela dica Reinaldo e pelo exemplo que foi perfeito!
Sem essa informação meu projeto ficaria "manco" rsrsrs

Forte abraço e tenha um ótimo final de semana!

 
Postado : 28/06/2013 1:26 pm