Página 1 de 1

Código de deleção para len = 18

Enviado: 26 Fev 2018 às 12:57
por AMORIM123
Salve, galera do forúm.

Tenho o seguinte código abaixo, cujo objetivo é identificar as linhas que possuem 18 caracteres e excluí-los , linha após linha, porém não está ocorrendo desta forma, quando depuro o código e ele chega em "linha = 2" na sequência já pula pra "end sub".
Código: Selecionar todos
Sub excluir_cnpj()

Dim linha As Integer
Dim plan As Worksheet


Set plan = Sheets("plan")
ActiveCell.Range("B2").Select
plan.Select

linha = 2

Do Until plan.Cells(linha, 2) = ""

If Len(ActiveCell) = 18 Then

    ActiveCell.Rows("1:1").EntireRow.Select
    Selection.Delete Shift:=xlUp
    ActiveCell.Select
    
    Exit Sub
    
Else

    linha = linha + 1
    
End If

Loop

End Sub

Segue anexo modelo da planilha para teste

Muito Obrigado a quem puder ajudar!

Re: Código de deleção para len = 18

Enviado: 26 Fev 2018 às 13:29
por gfranco
Boa tarde.
Teste o seguinte e veja se lhe atende.
Código: Selecionar todos
Sub Excluir()

Dim ulinha As Long
Dim w As Worksheet
Dim cel As Range
Dim tamanho As Long
Set w = Plan1
ulinha = w.Cells(w.Rows.Count, 2).End(3).Row


w.Select
w.Range("b2:b" & ulinha).Select


    For Each cel In Selection
    tamanho = VBA.Len(cel.Value)
    
        If tamanho = 18 Then
            cel.FormulaLocal = "=1"
        End If
        
    Next cel


w.Range("b2:b" & ulinha).SpecialCells(xlCellTypeFormulas, 1).EntireRow.Delete

End Sub

Re: Código de deleção para len = 18

Enviado: 26 Fev 2018 às 14:22
por osvaldomp
Código: Selecionar todos
Sub ExcluiLinhasCNPJ()
 With Sheets("Página1")
  .AutoFilterMode = False
  .Range("A1:Q1").AutoFilter Field:=2, Criteria1:="<>"
  .Range("A2:Q" & Cells(Rows.Count, 2).End(3).Row).SpecialCells(xlCellTypeVisible).EntireRow.Delete
  .AutoFilterMode = False
 End With
End Sub

Código de deleção para len = 18

Enviado: 26 Fev 2018 às 14:25
por AMORIM123
gfranco, desde já obrigado pela atenção!

O objetivo seria excluir as linhas da coluna B que contenham 18 caracteres (quantidade de caracteres de um cnpj com mascara)....no código acima ele substituí por "1" e depois apaga de dentro da célula, porém preciso que a linha inteira seja excluida, restando apenas os cpf's suas respectivas linahs

Código de deleção para len = 18

Enviado: 26 Fev 2018 às 14:35
por gfranco
Boa tarde.
Certifique-se de ter copiado toda a rotina pois ela foi escrita exatamente para excluir a linha inteira.

Re: Código de deleção para len = 18

Enviado: 26 Fev 2018 às 14:44
por gfranco
Segue o arquivo.

Código de deleção para len = 18

Enviado: 26 Fev 2018 às 14:49
por wesleyribeiro123
AMORIM123
Boa tarde,

Veja se o código abaixo lhe ajuda...
Resumi ele pra que a execução seja mais rápida e mais simples o entendimento!!!
Código: Selecionar todos
Sub excluir_cnpj()
Dim linha As Integer, plan As Worksheet
Set plan = Sheets("Página1")
linha = plan.Cells(Rows.Count, 2).End(xlUp).Row

For i = 2 To linha
    If Len(plan.Cells(i, 2)) = 18 Then
        plan.Cells(i, 2).EntireRow.Delete
    End If
Next i
End Sub

Código de deleção para len = 18

Enviado: 26 Fev 2018 às 14:51
por AMORIM123
DEU CERTO SIM!...OBG!