PROBLEMA EM ORDENAR STRING

TRTNCG 05/12/2016 01:00:51
#469416
Public Sub Ordernar_Numeros_Denuncia()

Dim var As String
Dim Juncao As String

For h = 1 To lst_denuncias.ListItems.Count
Juncao = Juncao & lst_denuncias.ListItems(h).SubItems(1) & [Ô], [Ô]
Next h

Juncao = Juncao & lbl_numDenuncia.Caption

valores = Array(Juncao)

For I = LBound(valores) To UBound(valores)
For j = LBound(valores) To UBound(valores)
If valores(I) < valores(j) Then
Temp = valores(I)
valores(I) = valores(j)
valores(j) = Temp
End If
Next j
Next I

s = [Ô][Ô]

For Each valor In valores
If valor <= UBound(valores) Then
s = s & valor & [Ô], [Ô]
Else
s = s & valor
End If
Next valor

End Sub

O estranho é que o problema está aqui na linha

valores = Array(Juncao)

Se por ventura colocar os mesmos valores que estão na variável, ele ordena normalmente

por exemplo: valores = Array(2, 3, 4, 5, 6, 7, 8, 1)

Aí da certinho, o que posso fazer?[txt-color=#080808] [/txt-color][txt-color=#0000f0] [/txt-color]
GANDA.NICK 05/12/2016 13:04:31
#469422
Resposta escolhida
O que vc quer usar aí é o Split, que divide uma string em um array...

valores = Array(2, 3, 4, 5, 6, 7, 8, 1)
A função Array recebe um paramArray e não uma string, logo valores = Array([txt-color=#e80000][Ô][/txt-color]2, 3, 4, 5, 6, 7, 8, 1[txt-color=#e80000][Ô][/txt-color]) dará erro...

Esse For each vc não precisa dele... a função Join faz isso para vc
Dim s As String
s = Join(valores, [Ô],[Ô])



Também não precisas da variavel Juncao, podes criar logo o array assim:
Dim valores() As Integer
ReDim valores(lst_denuncias.ListItems.Count - 1)
For h = 0 To lst_denuncias.ListItems.Count - 1
valores(h) = Val(lst_denuncias.ListItems(h).SubItems(1))
Next h

TRTNCG 05/12/2016 14:41:06
#469425
Mesmo alterando para a linha de código que descreveu dá erro

Dim valores() As Integer
ReDim valores(lst_denuncias.ListItems.Count - 1)

For h = 0 To lst_denuncias.ListItems.Count - 1 ---------------------- [txt-color=#0000f0]Na primeira interação dá erro aqui[/txt-color]
valores(h) = Val(lst_denuncias.ListItems(h).SubItems(1))
Next h

For I = LBound(valores) To UBound(valores)
For j = LBound(valores) To UBound(valores)
If valores(I) < valores(j) Then
Temp = valores(I)
valores(I) = valores(j)
valores(j) = Temp
End If
Next j
Next I

Dim s As String
s = Join(valores, [Ô],[Ô])

Tópico encerrado , respostas não são mais permitidas