Notifications
Clear all

EXCLUIR LINHA COM CRITERIO

2 Posts
2 Usuários
0 Reactions
1,733 Visualizações
(@silverio)
Posts: 50
Trusted Member
Topic starter
 

Tenho na coluna O varias palavras como ABER, CONF, CONFI CT, em fim gostaria que quando houvese a plavra ABER excluisse a linha, estou usando a rotina abaixo porém ela exlui quando que e também outras palavras, onde está o erro.

Sub APAGAR()
     Range("O10").Select
     For I = 10 To Plan1.Cells(Rows.Count, "J").End(xlUp).Row  '(intervalo das linhas)
       If Range("O" & I).Value = "ABER" Then
         ActiveCell.EntireRow.Delete
           Else
          ActiveCell.Offset(1, 0).Select
       End If
     Next

End Sub
 
Postado : 25/09/2016 10:12 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Tente assim:

Sub ExcluirLinha()

 Dim Col As Variant, Word As String

 Let Col = InputBox("Em qual coluna devo manter o foco da busca da palavra?")

 If Len(Col) > 0 And Not Col Like "*[!0-9]*" Then Col = Val(Col)

 Let Word = InputBox("Que palavra devo encontrar nas Linhas para apagá-las?")

 With Columns(Col)
     .Replace Word, "#N/A", xlWhole
     .SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Delete
 End With
End Sub

Ou assim:

Sub ExcluirLinha2()

    Dim vDeletaValor As String
    Dim vRange As Range
    Dim vModoCalcular As Long

    With Application
        vModoCalcular = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With

    'preencha o valor que voce deseja excluir
    'Variavel  vDeletaValor = "<>'ABER"  'inserir diferente<> deleta todas as palavras diferentes "ABER"
    vDeletaValor = "ABER"

    'Use a folha de planilha com o nome que desejar neste caso é direcionado para planilha ativa
    With ActiveSheet

        'primeiramente deverá remover o autofiltro
        .AutoFilterMode = False

        'aplicando o autofiltro e critérios para coluna(A)
        .Range("O9:O" & .Rows.Count).AutoFilter Field:=1, Criteria1:=vDeletaValor

        With .AutoFilter.Range
            On Error Resume Next
            Set vRange = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
                                .SpecialCells(xlCellTypeVisible)
            On Error GoTo 0
            If Not vRange Is Nothing Then vRange.EntireRow.Delete
        End With

        'Removendo autofiltro novamente
        .AutoFilterMode = False
    End With

    With Application
        .ScreenUpdating = True
        .Calculation = vModoCalcular
    End With
    
End Sub
 
Postado : 25/09/2016 10:26 am