Notifications
Clear all

Excluir linha inteira com críterio com "Do While"

5 Posts
4 Usuários
0 Reactions
1,282 Visualizações
AMORIM123
(@amorim123)
Posts: 77
Trusted Member
Topic starter
 

Bom dia gente!

Tenho o seguinte procedimento abaixo para realizar a exclusão da linha inteira caso seja identificado no loop que a célula ativa na coluna "C" possua letras e não números; no primeiro giro ocorre a exclusão, porém em seguida o loop passa a ser executado na coluna "A" o que não deve ocorrer, pois a célula ativa está coluna "C"

Sub excluir()


Dim w As Worksheet
Dim ultcel As Range

Set w = Sheets("NfeRelacaoRecebidas")
w.Select

Set ultcel = w.Range("C65536").End(xlUp)
ultcel.Select

Do While ActiveCell.Row >= 1

    If Not (IsNumeric(ActiveCell.Value)) Then
        ActiveCell.Rows("1:1").EntireRow.Select
        Selection.Delete shift:=xlUp
    End If
    
     ActiveCell.Offset(-1, 0).Select
    
Loop

MsgBox "Pode trabalhar!"

End Sub

Muito obrigado pela atenção

 
Postado : 11/05/2018 7:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Talvez assim:

Sub excluir()
Dim w As Worksheet
Dim ultcel As Long, x As Long

Set w = Sheets("NfeRelacaoRecebidas")
w.Select

ultcel = w.Range("C65536").End(xlUp).Row

For x = ultcel To 1 Step -1 'Do While ActiveCell.Row >= 1

    If Not (IsNumeric(Cells(x, 3).Value)) Then
        w.Rows(x & ":" & x).EntireRow.Delete
    End If
Next
MsgBox "Pode trabalhar!"

End Sub

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

 
Postado : 11/05/2018 8:03 am
AMORIM123
(@amorim123)
Posts: 77
Trusted Member
Topic starter
 

queria tentar pelo "do while", mas só encontro com "for" vou ter que me render mesmo a essa forma.
obrigado reinaldo

 
Postado : 11/05/2018 8:18 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 
Sub excluir()
On Error GoTo erro
Dim w As Worksheet
Dim ultcel As Range
Set w = Sheets("NfeRelacaoRecebidas")
w.Select
Set ultcel = w.Range("C65536").End(xlUp)
ultcel.Select
Do While ActiveCell.Row >= 1
    If Not (IsNumeric(ActiveCell.Value)) Then
        ActiveCell.EntireRow.Delete
     End If
 
     ActiveCell.Offset(-1, 0).Select
Loop
erro:
MsgBox "Pode trabalhar!"
End Sub

Obs* O método do colega Reinaldo é muito mais seguro..

Abrç!

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 11/05/2018 10:44 am
(@srobles)
Posts: 231
Estimable Member
 

Armorim,

Veja se o exemplo abaixo te ajuda:

Sub excluir()

Dim w As Worksheet
Dim linhaAtual, ultCel As Long

Set w = Sheets("NfeRelacaoRecebidas")
w.Select

linhaAtual = 1
ultcel = w.Cells(Rows.Count,3).End(xlUp).Row

   While linhaAtual <= ultCel 

    If Not (IsNumeric(Cells(linhaAtual,3)) Then
        Cells(linhaAtual,3).EntireRow.Delete
        linhaAtual = linhaAtual
        ultcel = w.Cells(Rows.Count,3).End(xlUp).Row
    Else
        linhaAtual = linhaAtual + 1
    End If
Wend

MsgBox "Pode trabalhar!"

End Sub

Espero ter ajudado.

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 11/05/2018 10:47 am