Inquiridor
como fazer pesquisa em varias planilhas

Pergunta
-
Todas as Respostas
-
Testa assim Anderson...
Sub busca() Dim fAddress As String 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto fAddress = "" 'Inicio a variável em cada loop Set c = plan.Range("A1:A100").Find(textoTextBox, lookat:=xlPart) 'pesquiso o valor considerando que o intervalo seria A1:A100 If Not c Is Nothing Then fAddress = c.Address Do 'If plan.cells(1,1).value "*" & textoTextBox & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula B1 à listbox1 listbox1.AddItem (plan.Cells(c.Row, 2).Value) 'Debug.Print plan.Cells(c.Row, 2).Value & " - " & c.Address & " [" & plan.Name & "]" Set c = plan.Range("A1:A100").FindNext(c) Loop While Not c Is Nothing And fAddress <> c.Address End If Next End Sub
Natan
-
Eai Anderson e Natan tudo blz obrigado pela ajuda, tem como pesquisar apartir da linha 8 coluna C pelo(Lote), esse codigo ai não apareceu nada na listbox porque não ? da uma olhada em uma das planilhas ai.
TOTAL DE ESTÓQUE SACOS kgs 50 CAIXAS quant 691 kgs 350 DESCARTE kgs 2320 150 100 600 500 300 200 956 565 265 215 2320 CONGELAMENTO cxs 300 kgs 300 PRODUTO AORTA FECHADA MATERIA PRIMA CONGELAMENTO PRODUTO ACABADO PERDAS ENTRADA KG SAÍDA KG ENTRADA ENTRADA SAIDA SAIDA ENTRADA ENTRADA SAIDA SAIDA DESCARTE DATA FRIGORÍFICO LOTE SIF NF PREÇO SACOS SACOS CAIXAS PESO CAIXAS PESO CAIXAS PESO CAIXAS PESO 17/08/2014 - 16:42:49 BURITI 1878 1778 145 156 150 100 300 250 150 100 300 500 200 150 2255 17/08/2014 - 16:44:32 FRIGONOSSA 1232 1290 256 233 300 250 150 100 656 65 65 65 65 17/08/2014 - 17:00:45 BURITI 1425 258 as planilhas são todas iguais só os nomes do produto que não PESSOAL A PESQUISA QUE EU QUERO FAZER EU TENHO UM USERFORM, AO DIGITAR A PRIMEIRA LETRA EM UM TEXTBOX ALTOMATICAMENTE A PESQUISA APARECE EM UMA LISTBOX, TEM COMO?
EU QUERIA TEMBEM QUE APARECESSE A PESQUISA DA COLUNA (A) ATÉ (Q) NA LISTBOX, DESDE JA OBRIGADO A TODOS E FIQUE NA PAZ.
- Editado ademir P da silva domingo, 24 de agosto de 2014 19:05
-
Anderson esta dando um erro no UsedRange o que pode ser?
Private Sub txtpesquisa_Change()
'O código deve ser colocado no evento Change da Caixa de Texto
'Para cada planilha em todas as planilhas desta pasta de trabalho
For Each plan In ThisWorkbook.Sheets
'Se o valor que estiver na célula A1 da planilha atual for
'parecido com o valor que está na caixa de texto
'Para cada celula no preenchida na planilha atual
For Each celula In ThisWorkbook.Sheets.UsedRange.Cells
If celula.Value <> "" Then
If celula.Value Like "*" & txtpesquisa.Text & "*" Then
'Será adicionado o valor que está na planilha atual
'na célula atual
ListBox1.AddItem (celula.Value)
End If
End If
Next celula
Next plan
End Sub -
Private Sub txtPesquisa_Change() 'O código deve ser colocado no evento Change da Caixa de Texto 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto 'Para cada celula no preenchida na planilha atual For Each celula In plan.UsedRange.Cells If celula.Value <> "" Then If celula.Value Like "*" & txtPesquisa.Text & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula atual ListBox1.AddItem (celula.Value) End If End If Next celula Next plan End Sub
- Sugerido como Resposta Anderson F. Diniz domingo, 24 de agosto de 2014 01:27
-
Testa assim Anderson...
Sub busca() Dim fAddress As String 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto fAddress = "" 'Inicio a variável em cada loop Set c = plan.Range("A1:A100").Find(textoTextBox, lookat:=xlPart) 'pesquiso o valor considerando que o intervalo seria A1:A100 If Not c Is Nothing Then fAddress = c.Address Do 'If plan.cells(1,1).value "*" & textoTextBox & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula B1 à listbox1 listbox1.AddItem (plan.Cells(c.Row, 2).Value) 'Debug.Print plan.Cells(c.Row, 2).Value & " - " & c.Address & " [" & plan.Name & "]" Set c = plan.Range("A1:A100").FindNext(c) Loop While Not c Is Nothing And fAddress <> c.Address End If Next End Sub
Natan
-
-
-
-
Insira um botão no formulário.
Dê um duplo clique sobre o botão.
Você cairá no evento click do botão.
Nesse evento, cole o código.
Anderson boa tarde? eu ja coloquei o codigo dentro do botão mas quando clico no botão a listbox aparece só a barra
de rolagen não aparece nem um testo. por que sera?
-
Ademir,
Vou falar sobre o meu código.
Private Sub txtPesquisa_Change() 'O código deve ser colocado no evento Change da Caixa de Texto 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto 'Para cada celula no preenchida na planilha atual For Each celula In plan.UsedRange.Cells If celula.Value <> "" Then If celula.Value Like "*" & txtPesquisa.Text & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula atual ListBox1.AddItem (celula.Value) End If End If Next celula Next plan End Sub
Você já testou esse código?
O que aconteceu?
-
Ademir,
Vou falar sobre o meu código.
Private Sub txtPesquisa_Change() 'O código deve ser colocado no evento Change da Caixa de Texto 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto 'Para cada celula no preenchida na planilha atual For Each celula In plan.UsedRange.Cells If celula.Value <> "" Then If celula.Value Like "*" & txtPesquisa.Text & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula atual ListBox1.AddItem (celula.Value) End If End If Next celula Next plan End Sub
Você já testou esse código?
O que aconteceu?
Ele aparece na primeira coluna da listbox os testos tudo misturado
eu queria a pesquisa da coluna (A) ate a coluna (Q) de todas as linhas das planilhas. da uma olhada ai na plan
tem como pesquisar apartir da linha 8 coluna C pelo(Lote) ate a coluna (Q)
desde ja obrigado pela ajuda.
TOTAL DE ESTÓQUE SACOS kgs 50 CAIXAS quant 691 kgs 350 DESCARTE kgs 2320 150 100 600 500 300 200 956 565 265 215 2320 CONGELAMENTO cxs 300 kgs 300 PRODUTO AORTA FECHADA MATERIA PRIMA CONGELAMENTO PRODUTO ACABADO PERDAS ENTRADA KG SAÍDA KG ENTRADA ENTRADA SAIDA SAIDA ENTRADA ENTRADA SAIDA SAIDA DESCARTE DATA FRIGORÍFICO LOTE SIF NF PREÇO SACOS SACOS CAIXAS PESO CAIXAS PESO CAIXAS PESO CAIXAS PESO 17/08/2014 - 16:42:49 BURITI 1878 1778 145 156 150 100 300 250 150 100 300 500 200 150 2255 17/08/2014 - 16:44:32 FRIGONOSSA 1232 1290 256 233 300 250 150 100 656 65 65 65 65 17/08/2014 - 17:00:45 BURITI 1425 258 -
Veja se melhorou:
Private Sub txtPesquisa_Change() 'O código deve ser colocado no evento Change da Caixa de Texto 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto 'Para cada celula no preenchida na planilha atual For Each celula In plan.UsedRange.Cells If celula.Row > 7 And celula.Column > 2 Then If celula.Value <> "" Then If celula.Value Like "*" & txtPesquisa.Text & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula atual ListBox1.AddItem (celula.Value) End If End If End If Next celula Next plan End Sub
-
Veja se melhorou:
Private Sub txtPesquisa_Change() 'O código deve ser colocado no evento Change da Caixa de Texto 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto 'Para cada celula no preenchida na planilha atual For Each celula In plan.UsedRange.Cells If celula.Row > 7 And celula.Column > 2 Then If celula.Value <> "" Then If celula.Value Like "*" & txtPesquisa.Text & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula atual ListBox1.AddItem (celula.Value) End If End If End If Next celula Next plan End Sub
ainda contiua aparecendo só uma coluna na listbox eu queria que aparecesse da coluna (A) até a coluna (Q)
na listbox blz
-
-
O código que consegui montar só preenche até 10 colunas da listbox.
Veja se serve para você.
Private Sub txtPesquisa_Change() 'O código deve ser colocado no evento Change da Caixa de Texto ListBox1.ColumnCount = 17 ListBox1.ColumnWidths = "60;60;60;60;60;60;60;60;60;60;60;60;60;60;60;60;60" 'Para cada planilha em todas as planilhas desta pasta de trabalho For Each plan In ThisWorkbook.Sheets 'Se o valor que estiver na célula A1 da planilha atual for 'parecido com o valor que está na caixa de texto 'Para cada celula no preenchida na planilha atual For Each celula In plan.UsedRange.Cells If celula.Row > 7 And celula.Column > 2 Then If celula.Value <> "" Then If celula.Value Like "*" & txtPesquisa.Text & "*" Then 'Será adicionado o valor que está na planilha atual 'na célula atual For i = 0 To 9 If i = 0 Then ListBox1.AddItem (ThisWorkbook.Sheets(plan.Name).Cells(celula.Row, i + 1)) Else ListBox1.List(ListBox1.ListCount - 1, i) = ThisWorkbook.Sheets(plan.Name).Cells(celula.Row, i + 1) End If Next i Exit Sub End If End If End If Next celula Next plan End Sub
-
Anderson não deu certo esse codigo, eu tenho que apertar o delete e ele não faz pesquisa nem todas as planilhas.
obrigado pela ajuda, mas sera que tem como fazer um botão no userform e pesquisar nas planilas e adicionar em listbox e escolher qual coluna das planilhas pesquisar? ai em inves de pesquisar em 17 colunas eu poço pesquisar em menos colunas. essas são as colunas para pesquisas, pode ser pelo lote do produto ok? se poder me ajudar, eu tenho 46 planilhas por isso quero fazer uma pesquisa rapida pode ser por procv em uma planilha ok? des de ja obrigado.
ENTRADA KG SAÍDA KG ENTRADA ENTRADA SAIDA SAIDA ENTRADA ENTRADA SAIDA SAIDA DESCARTE FRIGORÍFICO LOTE SIF NF PREÇO SACOS SACOS CAIXAS PESO CAIXAS PESO CAIXAS PESO CAIXAS PESO buriti 125 2558 555 300 250 150 100 300 500 200 150 2255 -
Anderson,
Você está excluindo uma grande quantidade de postagens, qual é o motivo disso?
Como sou moderador, consigo ver todas que excluiu, e assim fica difícil de acompanhar o tópico. Está tendo algum problema ao postar respostas no fórum?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br