Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por JulioPrestes
#52062
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
Você não está autorizado a ver ou baixar esse anexo.
Por JulioPrestes
#52065
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
Você não está autorizado a ver ou baixar esse anexo.
Por eduardogrigull
Posts
#52072
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord