Usuário com melhor resposta
Busca VBA - Em diferentes colunas

Pergunta
-
Muito Boa Tarde, Galera!!
Tenho uma dúvida:
Estou construindo um form que vai buscar o nome de determinada pessoa em 4 colunas diferentes em uma planilha e retornará as informações daquela pessoa para o form.
A título de exemplo, digamos que busquemos pelo nome João. Então um busca pelas colunas D, E, F e G deverá ser realizada no sentido de averiguar se o tal do João está em uma qualquer dessas colunas.
Depois disso, ele deverá retornar os dados cadastrais do João, contidos nas colunas A, B, C e H, para os textboxs do form.
Apenas para ressaltar, o João seria a referência, mas pode aparecer em quatro colunas diferentes.
Alguém poderia me dar um help?!
Obrigado, Everton
Respostas
-
Nomeie a primeira linha de caixas de texto como:
txtCod1, txtProd1, txtValor1
A segunda linha:
txtCod2, txtProd2, txtValor2
E assim por diante.
Sub Exemplo() Dim l As Long Dim lControle As Long Dim s As String Dim r As Range Dim rBanco As Range Set rBanco = Columns("D:G") Set r = Buscar("João", rBanco) If Not r Is Nothing Then s = r.Address Do l = r.Row lControle = lControle + 1 Controls("txtCod" & lControle).Text = Cells(l, "A") Controls("txtProd" & lControle).Text = Cells(l, "B") Controls("txtValor" & lControle).Text = Cells(l, "C") Set r = rBanco.FindNext(r) Loop While r.Address <> s Else 'Não foi encontrada nenhuma ocorrência! End If End Sub Function Buscar(sTermo As String, rBanco As Range) As Range Set Buscar = rBanco.Find(What:=sTermo _ , After:=rBanco.Cells(1) _ , LookIn:=xlValues _ , LookAt:=xlWhole _ , SearchOrder:=xlByColumns _ , SearchDirection:=xlNext _ , MatchCase:=True _ , SearchFormat:=False) End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta almeida.eas segunda-feira, 11 de junho de 2012 18:15
Todas as Respostas
-
Sub Exemplo() Dim r As Range Dim l As Long Set r = Buscar("João", Columns("D:G")) If Not r Is Nothing Then 'Foi encontrado "João" no intervalo D:G. l = r.Row TextBox1 = Cells(l, "A") TextBox1 = Cells(l, "B") TextBox1 = Cells(l, "C") TextBox1 = Cells(l, "H") Else 'Não foi encontrada nenhuma ocorrência! End If End Sub Function Buscar(sTermo As String, rBanco As Range) As Range Set Buscar = rBanco.Find(What:=sTermo _ , After:=rBanco.Cells(1) _ , LookIn:=xlValues _ , LookAt:=xlWhole _ , SearchOrder:=xlByColumns _ , SearchDirection:=xlNext _ , MatchCase:=True _ , SearchFormat:=False) End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Felipe, muito obrigado pela ajuda. Mas não deu certo.
Acontece que para o nome João pode haver mais de uma ocorrência.
O Form é o seguinte*:
*Eu não tenho um botão, msm! A ídeia é que o Fornecedor venha de outro Form, no evento Userform_Initialize(), e o mesmo evento chame a sub que fará a busca.
Obrigado, Everton
-
Nomeie a primeira linha de caixas de texto como:
txtCod1, txtProd1, txtValor1
A segunda linha:
txtCod2, txtProd2, txtValor2
E assim por diante.
Sub Exemplo() Dim l As Long Dim lControle As Long Dim s As String Dim r As Range Dim rBanco As Range Set rBanco = Columns("D:G") Set r = Buscar("João", rBanco) If Not r Is Nothing Then s = r.Address Do l = r.Row lControle = lControle + 1 Controls("txtCod" & lControle).Text = Cells(l, "A") Controls("txtProd" & lControle).Text = Cells(l, "B") Controls("txtValor" & lControle).Text = Cells(l, "C") Set r = rBanco.FindNext(r) Loop While r.Address <> s Else 'Não foi encontrada nenhuma ocorrência! End If End Sub Function Buscar(sTermo As String, rBanco As Range) As Range Set Buscar = rBanco.Find(What:=sTermo _ , After:=rBanco.Cells(1) _ , LookIn:=xlValues _ , LookAt:=xlWhole _ , SearchOrder:=xlByColumns _ , SearchDirection:=xlNext _ , MatchCase:=True _ , SearchFormat:=False) End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta almeida.eas segunda-feira, 11 de junho de 2012 18:15
-
Benzadeus, ainda não foi bem isso!
Mas deixei esse projeto parado. Estou trabalhando em outra coisa com Access - a idéia é a mesma, por isso talvez mude tudo. Não sei sobre seu conhecimento sobre SQL em Access, mas criei um outro post, quem sabe vc possa me ajudar:
http://social.msdn.microsoft.com/Forums/pt-br/520/thread/c47643c1-b9b0-4978-bb14-82eddf96a4f1
Abs!
Obrigado, Everton