Ir ao conteúdo
  • Cadastre-se

Excel macro par buscar dados até a última linha preenchida


Ir à solução Resolvido por Visitante,

Posts recomendados

Bom dia Pessoal, abusando mais um pouco...

Há possibilidade de modificar esse código para que a procura ignore as linhas em branco e carregue todos os dados no listbox?

Nesta situação, ao filtrar no textbox ele procura os dados inseridos no txt1 mas somente ate achar uma linha em branco e para. Se tiver mais dados abaixo desta linha em branco ele nao carrega na listbox.

 

Obrigado!

 

Private Sub txt1_Change()


Dim guia As Worksheet
Dim valor_celula, linha, linhalistbox As Integer
Set guia = Plan1
linhalistbox = 0
linha = 2
ListBox4.Clear
With guia

While .Cells(linha, 2).Value <> Empty


valor_celula = .Cells(linha, 3).Value
If UCase(Left(valor_celula, Len(txt1.Text))) = UCase(txt1.Text) Then ' campus


valor_celula = .Cells(linha, 9).Value
If UCase(Left(valor_celula, Len(txt2.Text))) = UCase(txt2.Text) Then ' cpf


valor_celula = .Cells(linha, 39).Value
If UCase(Left(valor_celula, Len(txt3.Text))) = UCase(txt3.Text) Then ' data

valor_celula = .Cells(linha, 40).Value
If UCase(Left(valor_celula, Len(txt4.Text))) = UCase(txt4.Text) Then ' situacao

With ListBox4
.AddItem

.List(linhalistbox, 0) = guia.Cells(linha, 1)
.List(linhalistbox, 1) = guia.Cells(linha, 2)
.List(linhalistbox, 2) = guia.Cells(linha, 4)
.List(linhalistbox, 3) = guia.Cells(linha, 9)
.List(linhalistbox, 4) = guia.Cells(linha, 22)
.List(linhalistbox, 5) = guia.Cells(linha, 25)
.List(linhalistbox, 6) = guia.Cells(linha, 39)
.List(linhalistbox, 7) = guia.Cells(linha, 40)
.
End With
linhalistbox = linhalistbox + 1
End If
End If
End If
End If

linha = linha + 1

Wend

End With

End Sub

 

Link para o comentário
Compartilhar em outros sites


 

Private Sub txt1_Change()


Dim guia As Worksheet
Dim valor_celula, linha, linhalistbox As Integer
Set guia = Plan1
linhalistbox = 0
ListBox4.Clear
With guia

For linha = 2 To .Cells(Rows.Count, 2).End(3).Row
 If .Cells(linha, 2).Value <> "" Then


valor_celula = .Cells(linha, 3).Value
If UCase(Left(valor_celula, Len(txt1.Text))) = UCase(txt1.Text) Then ' campus


valor_celula = .Cells(linha, 9).Value
If UCase(Left(valor_celula, Len(txt2.Text))) = UCase(txt2.Text) Then ' cpf


valor_celula = .Cells(linha, 39).Value
If UCase(Left(valor_celula, Len(txt3.Text))) = UCase(txt3.Text) Then ' data

valor_celula = .Cells(linha, 40).Value
If UCase(Left(valor_celula, Len(txt4.Text))) = UCase(txt4.Text) Then ' situacao

With ListBox4
.AddItem

.List(linhalistbox, 0) = guia.Cells(linha, 1)
.List(linhalistbox, 1) = guia.Cells(linha, 2)
.List(linhalistbox, 2) = guia.Cells(linha, 4)
.List(linhalistbox, 3) = guia.Cells(linha, 9)
.List(linhalistbox, 4) = guia.Cells(linha, 22)
.List(linhalistbox, 5) = guia.Cells(linha, 25)
.List(linhalistbox, 6) = guia.Cells(linha, 39)
.List(linhalistbox, 7) = guia.Cells(linha, 40)
.
End With
linhalistbox = linhalistbox + 1
End If
End If
End If
End If

Next linha
End If


End With

End Sub

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Inverta a posição dos comandos conforme abaixo.

 

de

Next linha.

End If

 

para

End If

Next linha

Se não resolver ou aparecer outro problema disponibilize o seu arquivo com os códigos instalados e descreva com exatidão o que você quer.

Não entendi qual é a missão da variável "valor_celula" no seu código...^_^

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...