PROBLEMA EM ORDENAR STRING
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]
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]
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
Também não precisas da variavel Juncao, podes criar logo o array assim:
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
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, [Ô],[Ô])
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