Public Shared Sub EnviaLST(ByRef lstPrimeira As ListBox, ByRef lstSegunda As ListBox) Dim X, Y, I As Integer Dim TamanhoPrimeira, TamanhoSegunda As Integer Dim DadosFicam(1, 1), DadosPrimeira(1, 1), DadosSegunda(1, 1) As String Dim Valor, Texto As String 'Pegando o tamanho da primeira ListBox TamanhoPrimeira = lstPrimeira.Items.Count ReDim DadosPrimeira(2, TamanhoPrimeira) 'Carregando os ítens não selecionados em uma matriz For I = 0 To TamanhoPrimeira - 1 If Not lstPrimeira.Items(I).Selected Then DadosPrimeira(0, I) = lstPrimeira.Items(I).Value DadosPrimeira(1, I) = lstPrimeira.Items(I).Text Else DadosPrimeira(0, I) = "0" End If Next 'Contando quantos ítens foram selecionados X = 0 For I = 0 To UBound(DadosPrimeira, 2) If DadosPrimeira(0, I) <> "0" Then X = X + 1 Next ReDim DadosFicam(2, X) 'Carregando uma matriz só com os ítens não selecionados X = 0 For I = 0 To TamanhoPrimeira - 1 If Not lstPrimeira.Items(I).Selected Then DadosFicam(0, X) = lstPrimeira.Items(I).Value DadosFicam(1, X) = lstPrimeira.Items(I).Text X = X + 1 End If Next 'Carregando a segunda Listbox com os ítens Selecionados For I = 0 To TamanhoPrimeira - 1 If lstPrimeira.Items(I).Selected Then lstSegunda.Items.Add(lstPrimeira.Items.Item(I)) Next 'Recarregando a primeira ListBox com os ítens não selecionados lstPrimeira.Items.Clear() For I = 0 To UBound(DadosFicam, 2) If Len(DadosFicam(1, I)) > 0 Then lstPrimeira.Items.Add(New ListItem(DadosFicam(1, I), DadosFicam(0, I))) End If Next TamanhoSegunda = lstSegunda.Items.Count ReDim DadosSegunda(2, TamanhoSegunda) For I = 0 To TamanhoSegunda - 1 DadosSegunda(0, I) = lstSegunda.Items(I).Value DadosSegunda(1, I) = lstSegunda.Items(I).Text Next For X = 0 To UBound(DadosSegunda, 2) For Y = UBound(DadosSegunda, 2) To 0 Step -1 If UCase(DadosSegunda(1, X)) > UCase(DadosSegunda(1, Y)) Then Valor = DadosSegunda(0, X) Texto = DadosSegunda(1, X) DadosSegunda(0, X) = DadosSegunda(0, Y) DadosSegunda(1, X) = DadosSegunda(1, Y) DadosSegunda(0, Y) = Valor DadosSegunda(1, Y) = Texto End If Next Next lstSegunda.Items.Clear() For I = 0 To UBound(DadosSegunda, 2) If Len(DadosSegunda(1, I)) > 0 Then lstSegunda.Items.Add(New ListItem(DadosSegunda(1, I), DadosSegunda(0, I))) End If Next End Sub