Página 1 de 1

Macro - Apagar ultima linha da tabela que contenha um texto

Enviado: 04 Set 2018 às 18:24
por AleJr
Olá pessoa, sou novo no fórum e estou com uma situação um tanto quanto especifica.
Espero que possam me ajudar

Possuo uma planilha que contem uma tabela chamada "Atividades", tenho alguns controles de formulário para preencher a mesma mas me surgiu a necessidade de inserir e excluir linhas dessa tabela sem interferir nas células ao seu lado. Preencher uma nova linha da tabela sem afetar as células do lado não é problema, ja consegui fazer isso. O problema esta sendo excluir a linha da coluna que contenha o valor adicionado (apenas o ultimo). Segue imagens para ilustrar o que pretendo fazer.

https://imgur.com/a/x5QfdEh

Ao clicar no botão + de "Telefonemas Atendidos" ele adiciona uma linha na tabela "Atividades" com o texto "Atendimento de Telefone"

Gostaria de poder fazer a mesma coisa com o botão - ao clicar nele, a ultima linha contendo "Atendimento de Telefone" seja excluída (apenas o ultimo dentro da tabela), mas de forma a não interferir nas células com o retângulo em azul.

Será que tem como?? Como podem ver ja possuo um controle que consegue apagar a ultima linha da tabela, uso esse código para fazer isso:
Código: Selecionar todos
Private Sub RemoveLinha_Click()
Dim i As Integer
i = ActiveSheet.ListObjects("Atividades").Range.Rows.Count
If i > 2 Then
    Range("D" & i).ListObject.ListRows(i - 1).Delete
End If
End Sub
No entanto não sei como identificar apenas o ultimo valor contendo o texto especifico para cada botão de menos que eu adicionar.

ME AJUDEEEEM!
Agradeço desde já a ajuda pessoal!!

Macro - Apagar ultima linha da tabela que contenha um texto

Enviado: 05 Set 2018 às 06:25
por JCabral
Forneça um exemplo, para ser mais fácil ajudar

Re: Macro - Apagar ultima linha da tabela que contenha um te

Enviado: 05 Set 2018 às 06:59
por gfranco
Bom dia.
Veja se o seguinte pode te ajudar:
Código: Selecionar todos
Sub main()
    Dim tabela As ListObject
    Dim i As Long
    Dim ul As Long
    Set tabela = Planilha1.ListObjects("Atividades") 'aqui deve ser ajustado para onde realmente está a sua tabela.
    
    ul = tabela.DataBodyRange.Rows.Count
    
    
        For i = ul To 1 Step -1
        
            If tabela.DataBodyRange.Cells(i, 2) = "Atendimento de telefone" Then
            'quando encontar a primeira ocorrência (de baixo pra cima) deleta a linha e sai do laço....
                tabela.DataBodyRange.Rows(i).Delete
                Exit For
            
            End If
        
        Next i
    
    Set tabela = Nothing


End Sub