Atualizar uma Listbox através de outra Listbox
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário José:
Boa Noite!
Tenho uma Listbox1 no qual efetua-se algumas consultas. Gostaria que ao selecionar um registro para consulta, na Listbox1, fosse incluído este registro na Listbox2 e apenas de forma temporária. E que ao fechar o aplicativo, a Listbox2 seja limpa.
Ex:
- Listbox1: João, Paulo, Marcos, Avelino, José
- Em um momento seleciono: Avelino e em outro momento: José.
- Listbox2: Avelino, José
Esta atualização. na Listbox2 seria efetuada no evento 'duplo_click' da Listbox1.
Suporte:
José,
segue o exemplo.
Acrescentei algumas funcionalidades:
- coloca a lista 2 em ordem alfabética;
- verifica se item já foi lançado;
- deleta item na lista 2, com dois cliques.
Veja os códigos utilizados:
Private Sub Lista_DblClick(Cancel As Integer)
Dim k, j() As String, l%
'verifica se o nome já está na lista
k = Split(Me!Lista2.RowSource, ";")
For l = 0 To UBound(k)
If k(l) = Me!Lista Then
MsgBox "O nome já está na lista...", vbInformation, "Aviso"
Exit Sub
End If
Next
'limpa a matriz
Erase k
'Adiciona item selecionado da listbox 1, na listbox 2
Me!Lista2.AddItem Me!Lista
'captura a lista e passa para uma matriz
k = Split(Me!Lista2.RowSource, ";")
'redimensiona a matriz j, no mesmo tamanho da matriz k
ReDim j(UBound(k))
'passa o conteúdo da matriz k para a matriz j
j = k
'ordena a matriz j em ordem alfabética
WizHook.SortStringArray j
'devolve a lista ordenada para a listbox 2
Me!Lista2.RowSource = Join(j, ";")
End Sub
Private Sub Lista2_DblClick(Cancel As Integer)
'Deleta item da listbox 2
Me!Lista2.RemoveItem Me!Lista2.ListIndex
End Sub
Usuário José:
Muito obrigado.
Atendeu perfeitamente!
Download
1 comentário(s) Ilmo 25/04/2023 08:06:56 Parabéns pelos valiosos ensinamentos com os quais, há muito, somos brindados e, agora, semanalmente. Especificamente com relação "Atualizar uma Listbox através de outra Listbox" me deparei com a seguinte situação: 1) Ao utilizar o formulário Teste do arquivo ListBoxParaListbox, este funcionou perfeitamente; 2) Ao importar o formulário Teste para o meu Banco de Dados, ocorreu um erro, cuja mensagem é: "Erro de Compilação: Tipo incorreto: era esperada matriz ou tipo definida pelo usuário." Ao abrir as Referências do arquivo ListBoxParaListbox constatei a existência do Microsoft Office 16.0 Access database engine Object Library. Ao tentar incluí-la no meu Banco de Dados surgiu a mensagem: "Nome em conflito com um módulo, projeto ou biblioteca de objetos já existente." Utilizo o Access 32bits, com as referências: Visual Basic..., Microsoft Access 16.0 ..., Ole Automation, Microsoft DAO 3.6 Object Library, Microsoft ActiveX Data Objects 6.1..., Microsoft Scripting Runtime, Microsoft Office 16.0 Library, Microsoft Outlook 16.0 |