Notifications
Clear all

Relatório Listbox

9 Posts
5 Usuários
0 Reactions
2,000 Visualizações
(@avgsantos)
Posts: 28
Eminent Member
Topic starter
 

Boa noite, Equipe de Fórum

Tenho um formulário com os dados em listbox e um botão para exibir um relatório de dados excluidos, minha duvida é o seguinte é possível selecionar mais de 2 linha no listbox para excluir os dados?
Segue a planilha em anexo

Obrigado
Avgsantos

 
Postado : 19/07/2017 6:12 pm
(@jokaman)
Posts: 44
Eminent Member
 

Boa tarde avgsantos

Veja se o exemplo que anexo ajuda.

Abr
Jorge Cabral

 
Postado : 20/07/2017 7:25 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Jokaman, acho que não é este caso porque ele quer que, ao clicar em "Excluir", além de excluir os itens selecionados da listbox, excluirá também os correspondentes na planilha!

Também estou tentando pensar em algo para adequar à rotina dele, pois acho que trabalhar este raciocínio em cima dessa estrutura vai ser mais difícil.

Pensei em algo tipo o seguinte:

armazenar o ID da linha selecionada na list e depois excluí-lo na planilha (através do Vlookup). Mas não sei como faria para armazenar várias "ID's" para procurá-los na planilha.

Enfim.... Fiquei curioso também, se alguém puder postar alguma solução!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 20/07/2017 11:56 am
(@avgsantos)
Posts: 28
Eminent Member
Topic starter
 

Boa noite, Leandro

Isso mesmo, na planilha consegui até excluir 1 linha da listbox na aba "box" e automaticamente irá transferir os dados excluídos para aba "relatórios" onde terei uma tela de visualização de dados excluídos, quando eu seleciono mais de 2 linhas só está excluindo 1 linha, estou tentando algumas estrutura deste raciocínio mas está difícil.

avgsantos

 
Postado : 20/07/2017 5:06 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Para excluir na planilha os registros correspondentes a todas as linhas selecionadas na TextBox é preciso um Loop pelos itens da TextBox para verificar quais estão selecionados.
O exemplo abaixo irá limpar os registros na planilha "box1" que correspondam aos itens selecionados na TextBox1.
Se você quiser que o código execute mais ações relativas a cada item selecionado, inclua as ações no Loop.

Private Sub btn_excluir_Click()
 Dim i As Long, k As Long
  For i = 0 To ListBox1.ListCount - 1
   If ListBox1.Selected(i) = True Then
    k = Sheets("box1").[A:A].Find(ListBox1.List(i), lookat:=xlWhole).Row
    Sheets("box1").Cells(k, 1).Resize(, 7).Value = ""
   End If
  Next i
End Sub

dica - não utilize Select ao elaborar os seus códigos

Osvaldo

 
Postado : 20/07/2017 5:49 pm
(@avgsantos)
Posts: 28
Eminent Member
Topic starter
 

Boa noite, Pessoal

Solução resolvida segue o código.

Dim indice
    
Plan2.Select

    indice = ListBox1.ListIndex + 3 'Verifica qual a linha esta seleciona no listbox e incremeta mais +3
    
    If MsgBox("Deseja excluir este item ?", vbExclamation + vbYesNo) = vbYes Then
        'Movemos o registro para a planilha Historico1
        'Para cada item selecionado no ListBox até o último
        For itemSelecionado = 0 To ListBox1.ListCount - 1
            ListBox1.ListIndex = itemSelecionado
            If ListBox1.Selected(itemSelecionado) = True Then
                With ThisWorkbook.Sheets("historico1")
                    .Activate
                    Dim novoRegistro As Integer
                    
                    novoRegistro = .UsedRange.Rows.Count + 1
                    
                    Cells(novoRegistro, "A") = ListBox1.List(ListBox1.ListIndex, 0)
                    Cells(novoRegistro, "B") = ListBox1.List(ListBox1.ListIndex, 1)
                    Cells(novoRegistro, "C") = ListBox1.List(ListBox1.ListIndex, 2)
                    Cells(novoRegistro, "D") = ListBox1.List(ListBox1.ListIndex, 3)
                    Cells(novoRegistro, "E") = ListBox1.List(ListBox1.ListIndex, 4)
                    Cells(novoRegistro, "F") = ListBox1.List(ListBox1.ListIndex, 5)
                    Cells(novoRegistro, "G") = ListBox1.List(ListBox1.ListIndex, 6)
                    
                End With
                
                'Removemos o item da planilha box1
                
                With ThisWorkbook.Sheets("box1")
                    .Activate
                    Columns(1).Select
                    Selection.Find(ListBox1.List(ListBox1.ListIndex, 0), ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate
                    
                    ActiveCell.Select
                    
                    ActiveCell.EntireRow.Delete
                    
                End With
                
            End If
        Next
        
    End If

    Call carrega_dados

    MsgBox "Item(ns) deletado(s) com sucesso!", vbInformation, "Exclusão de registros"

http://www.tomasvasquez.com.br/forum/vi ... 351#p22351

avgsantos

 
Postado : 20/07/2017 7:18 pm
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Obrigado por postar a resposta.
Abraço!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 21/07/2017 5:14 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Obrigado por portar a resposta.
Abraço!

Pois é, Leandro, só o interessado é que não se lembrou de agradecer aos que tentaram ajudar. :?:

Osvaldo

 
Postado : 21/07/2017 5:24 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

avgsantos

Veja como funciona o sistema de agradecimentos nos fóruns.

viewtopic.php?f=7&t=16757

[]s

Patropi - Moderador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/07/2017 8:10 am