Página 1 de 1

Macro não funciona em Loop

Enviado: 31 Jan 2020 às 12:02
por JulioPrestes
Oi, bom dia!

Criei um macro pra deletar a última linha preenchida da planilha se o valor da primeira coluna for um erro; essa parte está funcionando.

Mas eu queria que o macro repetisse essa ação até o valor da primeira coluna não ser um erro. Coloquei o "Do Until, Loop" e o macro parou de funcionar! :(
Ao invés disso, aparece um erro do VBA: https://prnt.sc/qvnubo

Imagino que seja algo simples, mas não estou conseguindo entender por que não funciona...
Tem alguma maneira de fazer isso funcionar?

Segue os códigos e pasta de exemplo:
Código: Selecionar todos
Sub Error_on_last_row_noLoop()
    
    Sheets("Plan1").Select
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row 'Find the last filled row

    If IsError(Cells(NextRow, 1)) Then
        Rows(NextRow).Select
        Selection.Delete Shift:=xlUp
    End If
End Sub
Código: Selecionar todos
Sub Error_on_last_row_withLoop()
    
    Sheets("Plan1").Select
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row 'Find the last filled row

    Do Until Cells(NextRow, 1).Value = "Dados"
        If IsError(Cells(NextRow, 1)) Then
            Rows(NextRow).Select
            Selection.Delete Shift:=xlUp
        End If
    Loop
End Sub

Re: Macro não funciona em Loop

Enviado: 31 Jan 2020 às 15:52
por JulioPrestes
Consegui corrigir o código! :mrgreen:
Agora funciona como eu esperava.
Código: Selecionar todos
Sub Error_on_last_row_withLoop()
    
    Sheets("Plan1").Select
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row 'Find the last filled row

    Do Until Not IsError(Cells(NextRow, 1))
        If IsError(Cells(NextRow, 1)) Then
            Rows(NextRow).Select
            Selection.Delete Shift:=xlUp
        End If
        
        NextRow = NextRow - 1
    Loop
End Sub

Macro não funciona em Loop

Enviado: 01 Fev 2020 às 08:28
por eduardogrigull
Dica: Quando você tiver algum erro que não faz ideia de onde vem, use a ferramenta de inspeção de variáveis do VBA.
Para usá-la, ao rodar o código ponha um ponto de interrupção no início. Ao chegar nesse ponto, vá em: Exibir > Janela 'Inspeção de variáveis'.
Após abri-la, arraste as variáveis ou parte de códigos que deseja saber o valor para essa janela, e prossiga o código apertando F8 (Analisando linha por linha)

Se você já resolveu seu problema, por favor marque o tópico como "resolvido" :D