Página 1 de 1
Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 12:04
por Wieniawski
Olá!
Preciso por favor de um código VBA para exclusão de linhas de acordo com determinado critério, ou seja, que toda linha cuja coluna B conste valores acima de 8000000000 sejam excluídas.
Alguém poderia me ajudar?
Grato!
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 14:08
por gfranco
Boa tarde.
Veja se te ajuda.
Código: Selecionar todosOption Explicit
Sub excluir()
Dim w As Worksheet
Dim lastRowData As Long
Dim i As Long
Dim valor As Variant
Dim counter As Long
Set w = ActiveSheet
counter = 0
lastRowData = w.Cells(w.Rows.Count, 2).End(3).Row
If lastRowData < 2 Then GoTo finaliza
valor = InputBox("Informe valor para exclusão", "Atenção")
If Not VBA.IsNumeric(valor) Then
MsgBox "Um valor não numérico foi informado" & _
VBA.Chr(13) & "Processo abortado"
GoTo finaliza
End If
valor = valor + 0
For i = 1 To lastRowData
If w.Cells(i, 2) > valor Then
w.Cells(i, 2) = ""
counter = counter + 1
End If
Next i
If counter > 0 Then
w.Range("b1:b" & lastRowData).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
finaliza:
Set w = Nothing
End Sub
Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 14:09
por gfranco
Nota:
A planilha ativa (no momento da execução do código acima) deve ser a planilha alvo da exclusão.
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 17:21
por Wieniawski
Obrigado Gfranco, mas infelizmente a macro não funcionou, quando coloco o valor na msgbox só exclui o cabeçalho da planilha.
Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 17:24
por gfranco
Sugiro, então, postar um exemplo (idêntico ao original) para uma melhor escrita.
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 17:30
por Wieniawski
Segue anexo
Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 17:31
por Wieniawski
gfranco, é possível excluir sem a mensagem?
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 17:54
por gfranco
Para esse último modelo postado, eu utilizaria o seguinte código:
Código: Selecionar todosSub excluir()
Dim w As Worksheet
Dim lastRowData As Long
Dim i As Long
Dim valor As Variant
Dim counter As Long
Set w = ActiveSheet
counter = 0
lastRowData = w.Cells(w.Rows.Count, 2).End(3).Row
If lastRowData < 2 Then GoTo finaliza
valor = 8000000000
For i = 2 To lastRowData
If w.Cells(i, 2) > valor Then
w.Cells(i, 2) = ""
counter = counter + 1
End If
Next i
If counter > 0 Then
w.Range("b1:b" & lastRowData).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
finaliza:
Set w = Nothing
End Sub
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 20:03
por osvaldomp
Código: Selecionar todosSub ExcluiLinhas()
With ActiveSheet
.AutoFilterMode = False
.Range("A1:D" & Cells(Rows.Count, 1).End(3).Row).AutoFilter 2, ">8000000000"
.Range("A2:D" & Cells(Rows.Count, 1).End(3).Row).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilterMode = False
End With
End Sub
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 20:14
por Wieniawski
gfranco escreveu:Para esse último modelo postado, eu utilizaria o seguinte código:
Código: Selecionar todosSub excluir()
Dim w As Worksheet
Dim lastRowData As Long
Dim i As Long
Dim valor As Variant
Dim counter As Long
Set w = ActiveSheet
counter = 0
lastRowData = w.Cells(w.Rows.Count, 2).End(3).Row
If lastRowData < 2 Then GoTo finaliza
valor = 8000000000
For i = 2 To lastRowData
If w.Cells(i, 2) > valor Then
w.Cells(i, 2) = ""
counter = counter + 1
End If
Next i
If counter > 0 Then
w.Range("b1:b" & lastRowData).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
finaliza:
Set w = Nothing
End Sub
Agora ficou perfeito, muito obrigado gfranco!
Re: Código VBA para exclusão de linhas
Enviado: 30 Mai 2018 às 20:16
por Wieniawski
osvaldomp escreveu:Código: Selecionar todosSub ExcluiLinhas()
With ActiveSheet
.AutoFilterMode = False
.Range("A1:D" & Cells(Rows.Count, 1).End(3).Row).AutoFilter 2, ">8000000000"
.Range("A2:D" & Cells(Rows.Count, 1).End(3).Row).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilterMode = False
End With
End Sub
Também deu certo desta forma, muito obrigado osvaldomp!