Boa noite.
Estou iniciando no VBA e estou com algumas dificuldades. Estou desenvolvendo um código onde desejo excluir linhas de acordo com algum critério.
Conforme pesquisa encontrei o código abaixo na própria página do Tomas.
No exemplo ele menciona a palavra ''London'' porém o que estou precisando é uma célula vazia. Fiz o teste trocando apenas por '' '' e a macro trava.
Gostaria de saber onde está meu erro e quais sugestões poderiam passar.
Caso necessite mais de um critério onde entraria o ''AND'' no código?
Agradeço desde já.
Function DeleteRowsByCriteria(ByVal firstRow As Integer, ByVal lastRow As Integer, ByVal criteriaColumn As Integer, ByVal criteria As String) As Integer
Dim deletedRows As Integer
Dim i As Integer
deletedRows = 0
With ActiveSheet
i = firstRow
While i < lastRow
If CStr(.Cells(i, criteriaColumn).Value) = criteria Then
.Rows(i).Delete
deletedRows = deletedRows + 1
Else
i = i + 1
End If
Wend
End With
DeleteRowsByCriteria = deletedRows
End Function
Sub Execute()
MsgBox DeleteRowsByCriteria (1, 200, 6, "London") & " rows has been deleted"
End Sub
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO
Re: XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO
fao17,
O critério para deletar as linhas é linha com determinada célula em branco?
Veja se o exemplo abaixo atende seua necessidade :
Altere "Plan1" para o nome da aba com a qual você está trabalhando e os números 1 nesta linha ".Cells(linhaAtual, 1) = Empty Or .Cells(linhaAtual,1)="" " para o número da coluna que está validando.
Espero ter ajudado.
Abs
O critério para deletar as linhas é linha com determinada célula em branco?
Veja se o exemplo abaixo atende seua necessidade :
Código: Selecionar todos
Sub deletaLinhas()
With ThisWorkBook.Sheets("Plan1")
Dim linhaAtual As Long, linhaFinal As Long
linhaAtual = 2
linhaFinal = .Cells(Rows.Count, 1).End(xlUp).Row
While linhaAtual <= linhaFinal
If .Cells(linhaAtual, 1) = Empty Or .Cells(linhaAtual,1)="" Then
.Cells(linhaAtual, 1).EntireRow.Delete
Else
linhaAtual = linhaAtual +1
linhaFinal = Cells(Rows.Count, 1).End(xlUp).Row
End If
Wend
End With
End Sub
Espero ter ajudado.
Abs