Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

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
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Seg Jun 10, 2019 7:10 pm

XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO

Mensagem por fao17 » Seg Jun 10, 2019 7:28 pm

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
Sabe muito
Sabe muito
Mensagens: 716
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO

Mensagem por srobles » Seg Jun 10, 2019 11:02 pm

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


Saulo

Remember when you were young?
You shone like the sun.
Shine On You Crazy Diamond


Se suas dúvidas foram esclarecidas, acrescente ao lado do título o texto [RESOLVIDO].

Responder