Ir para conteúdo
Fórum Script Brasil
  • 0

De uma listbox para outra listbox e imprimir...


André LUCAS

Pergunta

Bom dia pessoal estou precisando muito da ajuda de vocês!!

Sou novo no VBA na verdade ainda não sei quase nada!!

Tenho um UserForm de Pesquisa nele eu realizo as pesquisas tudo certinho...

Neste UserForm tem uma Listbox aonde aparecem todos os itens encontrados, agora o q eu quero é o seguinte.

Quero uma opção para ir selecionando múltiplas linhas dentro de uma listbox e depois de selecionadas quero clicar em um botão e todas as colunas dessas linhas selecionadas na Listbox1 sejam copiadas e coladas na Listbox2 e se eu clicar em outra linha essa linha também possa ser enviada ao clicar o botão. Mas as linhas que eu já mandei sejam bloqueadas de alguma forma para não mandar duas vezes a mesma linha...

E também uma opção para mandar todos os registros ao mesmo tempo se for preciso, pensei em uma CheckBox igual em uma caixa de e-mail...

E só para terminar pessoal queria também uma opção para imprimir a listbox2, mas isso seria separado em outro botão, com opção para configurar a impressão!

Pessoal por favo me ajudem preciso muito disso, preciso muito da ajuda de vocês!!

Abraços e obrigado desde já!!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Segue o código para o botão que adicionará os itens em outro ListBox

Private Sub btnAdicionar_Click()
    
    Dim j As Integer
    For j = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(j) Then
            If Not temItem(ListBox1.list(j), Me.ListBox2) Then
                adicionaItem ListBox1.list(j), Me.ListBox2
            End If
        End If
    Next j
    
End Sub

Private Function temItem(ByVal textoItem As String, ByRef listControl As Object) As Boolean

    If Not TypeName(listControl) = "ListBox" Then Exit Function
    
    Dim intContador As Integer
        
    For intContador = 0 To listControl.ListCount - 1
        If listControl.list(intContador) = textoItem Then
            temItem = True
            Exit Function
        End If
    Next intContador
    
    temItem = False
    
End Function

Private Sub adicionaItem(ByVal textoItem As String, ByRef listControl As Object)

    If Not TypeName(listControl) = "ListBox" Then Exit Sub
    listControl.AddItem textoItem

End Sub

Editado por João.Neto
Link para o comentário
Compartilhar em outros sites

  • 0

João Neto muito obrigado pela ajuda!!

Você pode me ajudar em mais uma coisa...

Utilizando o seu código eu consegui mandar da listbox1 para a listbox2 o unico problema é que só está indo o item da primeira coluna.

E a minha listbox1 tem 8 colunas como eu faço para mandar as oito colunas para a listbox2 ??

Abraços João Neto e mais uma vez muito obrigado!!

Deus te abençoe!!

Link para o comentário
Compartilhar em outros sites

  • 0

João o código que você me mandou faz quase tudo q eu preciso!!

Ele está levando apenas a primeira coluca para a listbox2 sendo que na minha listbox1 tem 8 colunas!!

O que tenho que fazer para que ele leve as oito colunas para a listbox2??

Se alguém puder me ajudar esse código ele pega da listbox1 e leva p/ a listbox2 e se alguma linha já estiver na listbox2 ele impede q essa seja levada novamente!!

Isso é exatamente o que eu qro a unica coisa é fazer ele levar a linha inteira!!

Obrigado!!

Private Sub CommandButton4_Click()

Dim j As Integer
For j = 0 To lstLista.ListCount - 1
If lstLista.Selected(j) Then
If Not temItem(lstLista.List(j), Me.ListBox1) Then
adicionaItem lstLista.List(j), Me.ListBox1
End If
End If
Next j

End Sub

Private Function temItem(ByVal textoItem As String, ByRef listControl As Object) As Boolean

If Not TypeName(listControl) = "ListBox" Then Exit Function

Dim intContador As Integer

For intContador = 0 To listControl.ListCount - 1
If listControl.List(intContador) = textoItem Then
temItem = True
Exit Function
End If
Next intContador

temItem = False

End Function

Private Sub adicionaItem(ByVal textoItem As String, ByRef listControl As Object)

If Not TypeName(listControl) = "ListBox" Then Exit Sub
listControl.AddItem textoItem

End Sub

Deus o abençoe!!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, uma sugestão e será beeeem trabalhoso:

Ao clicar em Adicionar, armazene todos os valores já existentes no ListBox2 em uma matriz com 8 colunas e adicione o novo item do Listbox1 à esta matriz também. Depois carregue novamente o ListBox2 através da propriedade List.

Dim res(0,7) 
'0 linhas e 8 colunas, depois você cria uma rotina para ele ficar redimensionando as linhas desta matriz
'Para isso será usado o Redim Preserve res(nova_quantidade_de_linhas, nova_quantidade_de_colunas)
'No caso as colunas serão sempre 7, que equivalem a 8 colunas.
Depois preenche os dados da matriz com os valores que estão no Listbox2. Ai você usa uma estrutura de repetição. Adiciona o novo item do ListBox1 nesta matriz e preenche o ListBox2 novamente.
ListBox2.List = res

Link para o comentário
Compartilhar em outros sites

  • 0

João Neto, essa matriz que você fala seria uma nova planilha certo??

E depois de mandar os itens da listbox1 p/ essa matriz e automaticamente atualizar a listbox2 os itens da matriz seriam apagados??

Como fazer isso, como mandar os itens da listbox1 p/ a matriz e fazer ela atualizar a listbox2??

E você sabe se tem como imprimir a listbox2 depois??

Tem outra opção ao invez de usar listbox...

Lembrando que eu estou usando a listbox1 para obter resultados de uma pesquisa...

Abraços João Neto e mais uma vez obrigado pela atenção!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...