ERRO NA ORDENA?ÃO DE ARRAYS
Boa noite pessoal,
Criei um código para organizar algumas informações em Arrays, mas estou com um grande problema. Ao invés de aparecer na sequência N1..., N2..., N3..., N4... e assim por diante, ele está aparecendo: N1..., N10..., N11... etc.
Segue o código abaixo:
Private Sub Form_Load()
[ô]Dim valores(12) As Variant
Dim Str1 As String
Dim Str2 As String
valores = Array([Ô]N2 XDFSDFKE[Ô], [Ô]N1 DHFJCKLS[Ô], [Ô]N4 HDKEIRKF[Ô], [Ô]N4 HEKDOSKD[Ô], [Ô]N3 URDKWJDI[Ô], [Ô]N8 HDJWIDKL[Ô], [Ô]N9 AHSKDWLK[Ô], [Ô]N11 BHWKJIUE[Ô], [Ô]N10 FHSKJEID[Ô], [Ô]N5 JHSJEOJD[Ô], [Ô]N6 PDKSKDOP[Ô], [Ô]N7 KHSKCEOP[Ô], [Ô]N12 QHSKEOP[Ô])
s = [Ô][Ô]
For Each valor In valores
s = s & valor & [Ô], [Ô]
Next valor
MsgBox [Ô]Não-Ordenados: [Ô] & vbNewLine & s
For i = LBound(valores) To UBound(valores)
For j = LBound(valores) To UBound(valores)
Str1 = Mid(valores(i), 1, InStr(1, valores(i), [Ô] [Ô]))
Str2 = Mid(valores(j), 1, InStr(1, valores(j), [Ô] [Ô]))
If Str1 < Str2 Then
temp = valores(i)
valores(i) = valores(j)
valores(j) = temp
End If
Next j
Next i
Criei um código para organizar algumas informações em Arrays, mas estou com um grande problema. Ao invés de aparecer na sequência N1..., N2..., N3..., N4... e assim por diante, ele está aparecendo: N1..., N10..., N11... etc.
Segue o código abaixo:
Private Sub Form_Load()
[ô]Dim valores(12) As Variant
Dim Str1 As String
Dim Str2 As String
valores = Array([Ô]N2 XDFSDFKE[Ô], [Ô]N1 DHFJCKLS[Ô], [Ô]N4 HDKEIRKF[Ô], [Ô]N4 HEKDOSKD[Ô], [Ô]N3 URDKWJDI[Ô], [Ô]N8 HDJWIDKL[Ô], [Ô]N9 AHSKDWLK[Ô], [Ô]N11 BHWKJIUE[Ô], [Ô]N10 FHSKJEID[Ô], [Ô]N5 JHSJEOJD[Ô], [Ô]N6 PDKSKDOP[Ô], [Ô]N7 KHSKCEOP[Ô], [Ô]N12 QHSKEOP[Ô])
s = [Ô][Ô]
For Each valor In valores
s = s & valor & [Ô], [Ô]
Next valor
MsgBox [Ô]Não-Ordenados: [Ô] & vbNewLine & s
For i = LBound(valores) To UBound(valores)
For j = LBound(valores) To UBound(valores)
Str1 = Mid(valores(i), 1, InStr(1, valores(i), [Ô] [Ô]))
Str2 = Mid(valores(j), 1, InStr(1, valores(j), [Ô] [Ô]))
If Str1 < Str2 Then
temp = valores(i)
valores(i) = valores(j)
valores(j) = temp
End If
Next j
Next i
Colega,
Quando ordenando arrays de string, realmente o 10 vem antes do 2, por exemplo, porque compara o código ASCII do caracter [Ô]1[Ô] com o código ASCII do caracter [Ô]2[Ô] assim o [Ô]1[Ô] do 10 vem antes do 2 e 10 acaba aparecendo na frente.
Já se comparar como números, usando a função VAL, dai número 2 (e não código ASCII do caracter [Ô]2[Ô]) virá antes do 10 (e não código ASCII dos caracteres [Ô]1[Ô] e [Ô]0[Ô]).
Tudo de bom.
Quando ordenando arrays de string, realmente o 10 vem antes do 2, por exemplo, porque compara o código ASCII do caracter [Ô]1[Ô] com o código ASCII do caracter [Ô]2[Ô] assim o [Ô]1[Ô] do 10 vem antes do 2 e 10 acaba aparecendo na frente.
Já se comparar como números, usando a função VAL, dai número 2 (e não código ASCII do caracter [Ô]2[Ô]) virá antes do 10 (e não código ASCII dos caracteres [Ô]1[Ô] e [Ô]0[Ô]).
Tudo de bom.
Boa noite Zeuzebio,
Entendi o que você quis dizer, você sabe como eu faço para remover as Arrays que tiver duplicadas?
Entendi o que você quis dizer, você sabe como eu faço para remover as Arrays que tiver duplicadas?
Tópico encerrado , respostas não são mais permitidas