1
resposta

Excluir Linha por criterio - VBA

Olá prezados!

Estou com um desafio onde devo desenvolver um script em VBA para excluir itens de um relatório que estão nulos. Até aí ok, mas não consigo deixar de uma maneira certa, pois caso o item esteja preenchido no relatório, ele deve lá permanecer para consulta. O código abaixo só vai excluir as linhas em branco, mas tem strings nas células do item, como Apresentação. Nisso, o código nao vai excluir corretamente.

Sub AjustarLayout()

 MsgBox "Layout Ajustado: " & AjustaLinhas(52, 450, 2, vbNullString)
End Sub
Function AjustaLinhas(ByVal linhaInicial As Integer, ByVal linhaFinal As Integer, ByVal colunaCriterio As Integer, ByVal criterio As String) As Integer
    Dim linhasExcluidas As Integer
    Dim i As Integer
    linhasExcluidas = 0
    With ActiveSheet
       i = linhaInicial
       While i < linhaFinal
         If CStr(.Cells(i, colunaCriterio).Value) = criterio Then
            .Rows(i).Delete
            linhasExcluidas = linhasExcluidas + 1
            linhaFinal = linhaFinal - 1
         Else
            i = i + 1



         End If
       Wend
    End With
    AjustaLinhas = linhasExcluidas
End Function

Queria anexar um modelo do relatório, mas não consegui Poderiam me ajudar? Grato

1 resposta

Olá Eloizi, tudo bem? Espero que sim!

Desculpe pela demora em retornar.

O que precisa ser verificado são os parâmetros dentro da função no momento da sua chamada, na Sub AjustarLayout().

Você utilizou a função AjustaLinhas(52, 450, 2, vbNullString), isso significa que você quer realizar a remoção de linhas, iniciando da linha 52 até a linha 450. O critério que vai utilizar é caso a segunda coluna dessa tabela tenha algum valor nulo, ou seja vbNullString.

Para remover valores que não sejam nulos, como a palavra Apresentação, você pode substituir o último parâmetro pela palavra de seu desejo, ficando atento em qual coluna quer realizar essa remoção, no caso apresentado foi avaliada a segunda coluna.

O código da Sub ficaria assim:

Sub AjustarLayout()
 MsgBox "Layout Ajustado: " & AjustaLinhas(52, 450, 2, "Apresentação")
End Sub

Caso queira remover diretamente os valores nulos e outras palavras, pode acrescentar usando o símbolo & ao final.

Sub AjustarLayout()
 MsgBox "Layout Ajustado: " & AjustaLinhas(52, 450, 2, vbNullString) & AjustaLinhas(52, 450, 2, "Apresentação")
End Sub

Escrevi em uma planilha de exemplo com dados e a palavra Apresentação na segunda linha e segunda coluna.

Planilha no Excel de exemplo com 3 linhas e 6 colunas, com a segunda linha incompleta

Usando o código modifcado da Sub para os dados em questão, pude eliminar a linha com a palavra apresentação:

Sub AjustarLayout()
 MsgBox "Layout Ajustado: " & AjustaLinhas(1, 4, 2, "Apresentação")
End Sub

Gif mostrando a execução de uma macro que exclui linhas baseada no critério de uma palavra na segunda coluna de uma tabela ser igual a palavra a ser excluída

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!