Vídeo recomendado
https://youtu.be/diWPPPhW-9E

XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
fao17
Colaborador
Colaborador
Mensagens: 10
Registrado em: Seg Jun 10, 2019 7:10 pm

XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO

Mensagem por fao17 »

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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO

Mensagem por srobles »

fao17,

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
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


Responder