Oi pessoal. Hoje vamos criar uma pesquisa personalizada bem simples com base no comando Localizar do excel. Nessa pesquisa, os dados retornados serão exibidos num formulário.
Vamos começar então.
Tendo em mãos uma planilha simples:
| Nome | Estado | Função | Status |
| Marcelle Silva | Rio de Janeiro | Técnica | Ativo |
| Cláudia Mara | Goiás | Técnica | Ativo |
| Ricardo Teles | Minas Gerais | Supervisor | Ativo |
| James Wood | Rio de Janeiro | Técnico | Férias |
| Aline Aguiar Moraes | Bahia | Técnica | Ativo |
| Cláudia Moraes Lima | Rio Grande do Sul | Gerente Executiva | Ativo |
| Marcelo de Souza | Rio de Janeiro | Supervisor | Aposentado |
| Maria Antonieta | Bahia | Secretária | Férias |
| Jackie Wistern | Bahia | Técnico | Ativo |
Temos, assim, quatro colunas: nome, estado, função e status. Adicione um botão de comando nessa planilha, definindo seu caption como “Localizar na Planilha”. Dê um duplo clique nesse controle para abrir o evento Click no ambiente VBA e podermos editá-lo. Quando abrir, digite isso:
Private Sub CommandButton1_Click()
frmBusca.Show False 'Exibe o Formulário da Pesquisa
End Sub
Bom, agora, adicione um formulário (Menu Inserir > UserForm) e dê o nome “frmBusca”.
Adicione a ele 5 TextBox, 8 Label, 1 CommandButton e 1 SpinButton. O formulário deve ficar parecido com este:
Defina os seguintes nomes aos controles:
CommandButton = btn_Procurar
SpinButton = SpinButton1
Label que vai mostrar a posição do registro atual = Label_Registros_Contador (Os demais Labels não precisa alterar os nomes)
Textbox onde vai digitar o termo da pesquisa = txt_Procurar (Os demais textbox deixe como TextBox1, TextBox2, TextBox3 e TextBox4)
Após ajustar o design do formulário, tecle F7 para exibir o seu código e declare as duas variáveis públicas abaixo:
Public MatrizResultados As Variant
Public Total_Ocorrencias As Long
Em seguida, crie a sub-rotina que executará a pesquisa no formulário:
Private Sub ProcuraPersonalizada(ByVal TermoPesquisado As String)
Dim Busca As Range
Dim Primeira_Ocorrencia As String
Dim Resultados As String
'Executa a busca
Set Busca = Plan1.Cells.Find(What:=TermoPesquisado, After:=Plan1.Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'Caso tenha encontrado alguma ocorrência...
If Not Busca Is Nothing Then
Primeira_Ocorrencia = Busca.Address
Resultados = Busca.Row 'Lista o primeiro resultado na variavel
'Neste loop, pesquisa todas as próximas ocorrências para
'o termo pesquisado
Do
Set Busca = Plan1.Cells.FindNext(After:=Busca)
'Condicional para não listar o primeiro resultado
'pois já foi listado acima
If Not Busca.Address Like Primeira_Ocorrencia Then
Resultados = Resultados & ";" & Busca.Row
End If
Loop Until Busca.Address Like Primeira_Ocorrencia
MatrizResultados = Split(Resultados, ";")
'Atualiza dados iniciais no formulário
SpinButton1.Max = UBound(MatrizResultados) 'Valor maximo do seletor de registros
'habilita o seletor de registro
SpinButton1.Enabled = True
'indicador do seletor de registros
Label_Registros_Contador.Caption = "1 de " & UBound(MatrizResultados) + 1
'Box com o conteudo encontrado
TextBox1.Text = Plan1.Cells(MatrizResultados(0), 1).Value
TextBox2.Text = Plan1.Cells(MatrizResultados(0), 2).Value
TextBox3.Text = Plan1.Cells(MatrizResultados(0), 3).Value
TextBox4.Text = Plan1.Cells(MatrizResultados(0), 4).Value
Else 'Caso nada tenha sido encontrado, exibe mensagem informativa
SpinButton1.Enabled = False 'desabilita o seletor de registros
Label_Registros_Contador.Caption = "" 'zera os resultados encontrados
'limpa os campos do formulário
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
MsgBox "Nenhum resultado para '" & TermoPesquisado & "' foi encontrado."
End If
End Sub
Feito isso, falta criar os procedimentos a serem executados ao abrir o formulário, ao clicar no botão pesquisar e ao clicar nos botões que percorrem os resultados obtidos. Segue abaixo esse códigos nesta ordem:
Private Sub UserForm_Initialize()
SpinButton1.Enabled = False
Label_Registros_Contador.Caption = ""
End Sub
Private Sub btn_Procurar_Click()
If Me.txt_Procurar.Text = "" Then
MsgBox "Digite um valor para a pesquisa"
Else
Call ProcuraPersonalizada(Me.txt_Procurar.Text)
End If
End Sub
Private Sub SpinButton1_Change()
Dim Linha As Long
Dim TotalOcorrencias As Long
TotalOcorrencias = SpinButton1.Max + 1
Linha = MatrizResultados(SpinButton1.Value)
Label_Registros_Contador.Caption = SpinButton1.Value + 1 & " de " & TotalOcorrencias
TextBox1.Text = Plan1.Cells(Linha, 1).Value
TextBox2.Text = Plan1.Cells(Linha, 2).Value
TextBox3.Text = Plan1.Cells(Linha, 3).Value
TextBox4.Text = Plan1.Cells(Linha, 4).Value
End Sub
Pronto. Após todos os códigos digitados, basta acessar a planilha, clicar no botão “Localizar na Planilha”, digitar o texto que deseja encontrar e será exibido nos campos do formulário todas as ocorrências obtidas na consulta.
Um abraço a todos.
Termos aprendidos neste artigo:
| Find | Localiza informações específicas em um intervalo, e retorna um objeto Range representando a primeira célula onde essas informações se encontram. Retorna Nothing se nenhuma coincidência for encontrada. Não afeta a seleção da célula ativa.
expressão.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat) expressão necessária. Uma expressão que retorna um objeto Range. What Variant necessário. Os dados a serem procurados. Pode ser uma seqüência de caracteres ou qualquer tipo de dados do Microsoft Excel. After Variant opcional. A célula depois da qual você deseja que a pesquisa comece. Corresponde à posição da célula ativa quando uma pesquisa é feita a partir da interface do usuário. Observe que After precisa ser uma única célula no intervalo. Lembre-se de que a pesquisa começa depois dessa célula; a célula especificada não é pesquisada até que o método dê a volta e chegue a ela. Se você não especificar esse argumento, a pesquisa começará após a célula do canto superior esquerdo do intervalo. LookIn Variant opcional. O tipo de informação. LookAt Variant opcional. Pode ser uma das seguintes constantes XlLookAt: xlWhole ou xlPart. SearchOrder Variant opcional. Pode ser uma das seguintes constantes XlSearchOrder: xlByRows ou xlByColumns. SearchDirection XlSearchDirection opcional. A direção da pesquisa.
MatchCase Variant opcional. True para fazer a pesquisa fazer distinção entre maiúsculas e minúsculas. O valor padrão é False. MatchByte Variant opcional. Usado somente se você tiver selecionado ou instalado suporte de linguagem de byte duplo. True para que os caracteres de dois bytes coincidam somente com caracteres de dois bytes. False para que os caracteres de dois bytes coincidam com seus equivalentes de um byte. SearchFormat Variant opcional. O formato da pesquisa |
||||
| FindNext | Continua uma pesquisa que tenha começado com o método Find. Localiza a próxima célula que coincida com as mesmas condições e retorna um objeto Range representando essa célula. Não afeta a seleção da célula ativa.
expressão.FindNext(After) Método FindNextexpressão necessária. Uma expressão que retorna um objeto Range. After Variant opcional. A célula depois da qual você deseja procurar. Corresponde à posição da célula ativa quando uma pesquisa é feita a partir da interface do usuário. Observe que After precisa ser uma única célula no intervalo. Lembre-se de que a pesquisa começa depois desta célula; a célula especificada não é pesquisada até que o método dê a volta e chegue à ela. Se esse argumento não for especificado, a pesquisa começará após a célula do canto superior esquerdo do intervalo. |
||||
| Show | Exibe um objeto UserForm.
Método Show Sintaxe [object.]Show modal A sintaxe do método Show tem as seguintes partes:
|
Você também gostará de ler:





Muito obrigado, amigo. Você me tirou muitas dúvidas com esse artigo!
Reply
Esta expressão abaixo só fica no vermelho, ja conferi..reconferi…e não encontrei onde esta o erro…se ela não pretejar..rssss não funciona…ONDE FOI QUE EU ERREI ???
Set Busca=Plan1.Cells.Find(What:=TermoPesquisado,After:=Range(“A1″), LookIn:=xlFormulas,_
LookAt:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,_
MatchCase:=False, SearchFormat:=False)
Reply
exceldoseujeito Reply:
novembro 23rd, 2008 at 14:49
Reinaldo, acredito que você tenha copiado o código neste artigo e colado no excel. Alguns caracteres quando são copiados do html tem uma codificação que não é interpretada corretamente no ambiente VBA, inclusive.
Faça o seguinte, neste seu caso específico, redigite as “aspas duplas” no código. Então vai dar certo.
Obrigado pela visita.
Reply
Qdo eu mando executar ele chega a abrir a caixa de pesquisa, mas quando vou pesquisar ele gera o erro 424 dizendo q o objeto eh obrigatório, como eu conseguiria contornar esse erro?
Reply
exceldoseujeito Reply:
novembro 24th, 2008 at 18:53
Davidson, seu provável erro deve ser na digitação do código. Após o erro, o análise de erros do VB deve marcar em amarelo a linha com problema. Veja o que está escrito e poste aqui novamente. Abraço.
Reply
Private Sub CommandButton1_Click()
frmBusca.Show False
End Sub
A linha fica no frmBusca.show
Reply
Você tem alguma apostila sobre VBA, eu tentei redigitar os códigos, mas não foi. Mesmo assim vlw pela ajuda ab!
Reply
Boa tarde!
Você sabe dizer se no excel há alguma maneira de verifiar a a existencia de algum caminho por exemplo. Eu gostaria de fazer um If com a seguinte sentença
If o endereço abaixo exista, execute-o
Windows(“Processo de devolução de leasing.xls”).Activate
Else
execute esse caminho alternativo
c:\….
Reply
Este site me foi muito util, parabens ao seu idealizador,
grato!
wenes
Reply
exceldoseujeito Reply:
dezembro 5th, 2008 at 3:57
Obrigado pelas palavras. Incentivam muito o nosso trabalho.
Reply
Testei a rotina e funcionou perfeitamente, inclusive com acréscimo de novos campos de pesquisa. Ficou uma dúvida: caso queira pesquisar numa única coluna, como fazer? Se não estou enganado, o FIND pesquisa na planilha toda.
Reply
exceldoseujeito Reply:
dezembro 22nd, 2008 at 2:39
Você pode pesquisar em colunas específicas sim. No exemplo, ensinei a pesquisar na planilha inteira. Eu usei Plan1.Cells. Para pesquisar em uma coluna só, você deve definir a coluna desejada na expressão do método find. Exemplo: Para pesquisar na coluna A, digite: Plan1.Range(“A:A”).Find. Entendeu?! Assim a pesquisa será feita apenas na coluna A.
Um abraço.
Reply
As informações deste site são as mais úteis e diretas que já encontrei. Grato pelo pronto retorno.
Reply
Tenho feito muito bom uso desta pesquisa. Como sempre, as necessidades avançam: que modificações devo introduzir para que a pesquisa colete dados de outra pasta de trabalho diferente daquela onde está o form? É possível?
Reply
exceldoseujeito Reply:
abril 26th, 2009 at 12:56
É possivel sim. Basta informar a região onde será feita a pesquisa. No exemplo, eu referencio a Plan1. Você pode alterar para a planila que desejar.
Abraço.
Reply
O espinButton não funciona, fica ativado porem não segue para frente nem para trás o que está errado?
Reply
exceldoseujeito Reply:
abril 26th, 2009 at 12:15
Sem ver o seu arquivo fica difícil saber o que deu errado. Pode ser alguma falha de digitação. Uma simples aspas inserida de forma incorreta já impossibilita a boa eficácia do código.
Reply
È bom porém o spinButton não funcionou, ele fica ativado mas não vai para frente nem para trás, o que deve estar errado!
Nilson
Reply
exceldoseujeito Reply:
abril 26th, 2009 at 12:17
Respondido no tópico anterior
Reply
Com Relação a este trecho do código comentado pelo Reinaldo, eu digitei e deu erro. Posteriormente Copiei e colei somente esta parte e funcionou.
Set Busca=Plan1.Cells.Find(What:=TermoPesquisado,After:=Range(”A1″), LookIn:=xlFormulas,_
LookAt:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,_
MatchCase:=False, SearchFormat:=False)
Uma das coisas que Tive Duvida é após ajustar o Desing manda clicar em F7 e declarar duas variaveis, sendo que clicando em F7 a Tela já aparece para criar um UseForm. Fiquei indeciso se era para digitar ali mesmo ou não.
O Que eu Gostaria agora é de acessar novamente o código do UserForm Para Fazer umas Modificações, mas não estou conseguindo.
Reply
exceldoseujeito Reply:
maio 6th, 2009 at 19:58
Haroldo,
Como disse em resposta ao Reinaldo, se você tiver copiado no site e colado no código, alguns caracteres HTML podem não ser no mesmo padrão que um texto puro, exemplo disso são as “aspas duplas”, sempre dá erro nelas. Enfim, tente digitar o código manualmente.
Quanto a sua dúvida da exibição do código, a tecla F7 é um tecla de atalho para acesso ao código do objeto que estiver ativo no momento do seu pressionamento. Alternativamente, você pode exibir o código do formulário, por exemplo, clicando em seu interior com o botão direito do mouse, em seguida, clicando na opção “Exibir código”. Outra maneira é acessar a opção “Exibir” no menu principal e selecionar a opção “Código”.
Um abraço
Reply
Conforme o Nilson Disse, Realmente o SpinButton não funcionou comigo também.
Reply
exceldoseujeito Reply:
maio 6th, 2009 at 20:01
Haroldo,
Fica difícil prever o que possa estar ocorrendo no seu projeto sem ter acesso a sua planilha.
Sugestão: Baixe o arquivo fonte que disponibilizei aqui no site e faça os testes.
Baixar Arquivo de Exemplo
Um abraço.
Reply
meu caro amigo…
esta dica de formulário acabou por resolver um grande problema meu… muito obrigado….
estou doido para que vc poste uma nova busca para buscar mais de um termo…
mas muito obrigado mesmo :D
Reply
Boa tarde!Em primeiro lugar, parabéns pelo site!Muito bem explicado.Eu gstaria de saber se existe algum método de as cores da planilha não sairem na hora da impressão.Gostaria de as visualizar colorida na tela, mas na hora da impressão as cores não sairem.Desde já muito agradecido.
Reply
exceldoseujeito Reply:
julho 30th, 2009 at 17:57
Obrigado.
Para imprimir em preto e branco, você pode clicar Arquivo > Configurar Página…
Em seguida, selecione a aba “Planilha” e marque a opção “Preto e branco” do bloco Imprimir.
Clique em Ok e pronto.
Abraços
Reply
Olá
Estava pensando em utilizar modelo semalhante em nossos controles aqui na empresa, porém antes das adaptações tentei exatamente o que descreve acima, e ao clikar no botão de comando, abre o formulário porém não funciona. também não dá mensagem de erro. apenas não funciona. favor enviar e-mail para contato, assim lhe mando meu arquivo para que vc possa verificar o que está errado.
Abraços…
Reply
exceldoseujeito Reply:
agosto 25th, 2009 at 13:10
Olá Edmar,
Vários motivos podem causar a inoperância do código. Alguns deles eu já descrevi nos comentários deste artigo. Depois dê uma olhadinha neles, podem esclarecer sua dúvida.
As macros podem estar desativadas: ative-as através das opções de segurança. Algum erro de digitação no código: tipo, caso vc tenha copiado e colado o código diretamente do site, as aspas não são compreendidas pelo compilador, tente substituí-las. Enfim, existem n possibilidades.
Mas se quiser, enviar uma planilha para nós, acesse o link Orçamento gratuito. Inclusive, aproveito para dizer que desenvolvemos projetos de acordo com a proposta do cliente, automatizando aos mais diversos tipos e modelos de planilhas com ótimos preços. E o orçamento, como disse, é gratuito.
Abraço.
Reply
DIZ TUDO CONFORME ORIENTADO MAS DA ERRO SpinButton1 E MANDA DEPURAR
Private Sub SpinButton1_Change()
Dim Linha As Long
Dim TotalOcorrencias As Long
TotalOcorrencias = SpinButton1.Max + 1
Linha = MatrizResultados(SpinButton1.Value)
Label_Registros_Contador.Caption = SpinButton1.Value + 1 & ” de ” & TotalOcorrencias
TextBox1.Text = Plan1.Cells(Linha, 1).Value
TextBox2.Text = Plan1.Cells(Linha, 2).Value
TextBox3.Text = Plan1.Cells(Linha, 3).Value
TextBox4.Text = Plan1.Cells(Linha, 4).Value
End Sub
Reply
Olá,
Cara está dica é D+ 100%, queria saber só um pouquinho do que vc sabe.
Estou vendo as outras dicas e são TOP.
Não consegui escrever o vba mas vi que vc postou acima, e funciona 100%,
até localizei onde eu estava errando.
Attenciosamente
GGB
Reply
Aqui Portugal
Gostei muito deste site. É EXCEL mesmo do meu jeito. Obrigado
Cesar
Reply
Muito boa as explicacoes deste site, tenho uma duvida, como fazer qdo o meu campo de pesquisa for data, eu tenho q mudar alguma coisa_>_? muito obrigado
Reply
Reinaldo Coral Reply:
dezembro 31st, 2009 at 14:51
Não é necessário alterações para buscar por data.
Reply
Estou perguntando por que eu fiz as mudancas e esta dando erro aqui._?:
Set Busca = Ficha.Cells.Find(What:=TermoPesquisado, After:=Range(“B43″), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
acho q na ultima linha, pelo menos e onde fica o ponteiro.
Reply
Reinaldo Coral Reply:
dezembro 31st, 2009 at 14:50
Não identifiquei erro acima.
Reply
Estou estudando esse material a bastante tempo, e neste momento estou usando ele para gerar um protocolo de serviço buscando dados em outro planilha.
O recurso que estou usando é esse:
‘Abra a unidade c: e o diretório SAEW
ChDir “C:\saew”
‘Abre o arquivo saetab.dbf e copia todos os dados
Workbooks.Open Filename:=”C:\saew\saetab.dbf”, Notify:=True
Cells.Select
Selection.Copy
Windows(“buca Personalizada.xls”).Activate
Sheets(“DADOS”).Select
Cells.Select
Range(“a1″).Activate
ActiveSheet.Paste
‘Fecha o arquivo SAETAB
Windows(“SAETAB.DBF”).Activate
ActiveWindow.Close
Reply
Formula de busca muito bem elaborada. Comigo esta funcionando tudo corretamente.
Muito obrigado Reinaldo, por compartilhar conosco as suas habilidades e conhecimento.
Reply
Reinaldo Coral Reply:
janeiro 29th, 2010 at 22:06
Nilton,
É um prazer.
Abçs
Reply
Caro amigo estou tentando utlizar este codigo de busca, porem se a consulta tiver que retornar valores em hora ? como faço?
Reply
Reinaldo Coral Reply:
abril 1st, 2010 at 13:30
Oi Wilson,
No caso do exemplo, as buscas são feitas com base em valores de cadeia de caracteres, ou seja, texto puro. O parâmetro de consulta é informado pela variável TermoPesquisado (As String).
Para adaptar a valores data/hora, você deverá informar ao programa, através de um identificador Date.
Sugestão: Crie um código condicional para fazer uma avaliação do tipo de parâmetro que foi recebido para consulta e alterar o tipo de variável a ser pesquisada.
Um abraço.
Reply
Wilson Reply:
abril 1st, 2010 at 13:53
Amigo, sou leigo no VBA , pode ajudar com este codigo ?
Reply
Wilson Reply:
abril 5th, 2010 at 18:54
Reinaldo o codigo e otimo… mais cinseramente não consegui criar a condicional explicada acima. ajuda por favor….
Reply
Estou utilizando a sua pesquisa e funciona perfeitamente quando usado a planilha 1, porem quando mudo para outra planilha nao funciona.
Meus dados estão na planilha 15, tentei colocar Plan15.Cells e NomePlanilha.Cells mas não funciona.
Um abraço
Reply
Reinaldo Coral Reply:
maio 21st, 2010 at 14:02
Victor,
Substitua todas as ocorrências de Plan1 para a Planilha desejada que dará certo sim.
Uma sugestão mais eficiente seria definir uma variável global de objeto e setá-la com a planilha desejada. E substituir todas as ocorrências de Plan1 no código por esta variável.
Abraço
Reply
Reinaldo segue a resolução ,Alterei o codigo na linha ;
TextBox3.Text =(Plan1.Cells(MatrizResultados(0), 3).Value
para :
TextBox3.Text = Format(Plan1.Cells(MatrizResultados(0), 3).Value, “hh:mm”)
Isto nas duas rotinas e está funcionado perfeitamente.
Obrigado pela ajuda e otimo Site… recomendo….
Reply
Esse código é mais que 100000000000000, me ajudou muito, acrescentei mais algumas funções e agora estou perdendo sono para configura-las;
Por favor se poder me ajudar, a função que acrescentei envia o formulário para o banco de dados até ai tudo bem, quando eu busco atraves da busca avançada e altero alguns dados deste cadastro não consigo fazer ele inserir na mesma linha de origem,ou seja, ele inseri na proxima linha vazia.
Reply
Reinaldo Coral Reply:
maio 14th, 2010 at 20:21
Olá Sampaio.
Fico feliz que este artigo tenha sido útil para você.
Quanto a sua pergunta, não sei qual o código que você adicionou para fazer inserções no banco. Mas, o que você necessita para que atenda o seu desejo de edição de dados, é que no momento da busca, seja coletada a informação de posição atual do registro localizado e exibido na tela.
Como disse, não sei qual o código que você usa para cadastramento no banco, mas pelo pouco que você falou, você só possui um código de inclusão de dados.
Abraço
Reply
Porque não me deu resposta e a minha pergunta foi retirada da postagem? qual foi o problema?
Reply
Reinaldo Coral Reply:
maio 14th, 2010 at 20:24
Sampaio, todos os comentários são moderados, para evitar spammers e propagandas indesejadas.
Assim que possível sempre respondo aos comentários.
Sds
Reply
Olá Reinaldo;
Eu necessito que ao coletar a informação do banco de dados ela possa ser alterada e que esta alteração seja lançada de volta na mesma linha de origem, preservando assim o restante das informações que não precisaram ser alterados;
Se poder me ajudar, eu e meu sono agradece.
Abraço
Reply
Boa tarde, Reinaldo
Espero que possa me ajudar, desde já obrigado;
Coloquei este codigo na sua “Pesquisa Personalizada”, a idéia é que quando ele buscar os dados o mesmo possa ser alterado, ex. mudar somente o telefone ou endereço etc. e o restante permaneça, porém esses dados precisam ser lançados de volta na mesma linha de origem da planilha já com as alterações;
Só consegui fazer o codigo lançar em uma nova linha vazia abaixo, preciso muito que ele volte na linha de origem, existem varias planilhas buscando esses dados.
Private Sub CommandButton1_Click()
‘Insere as informações no banco de dados
‘Seleciona a primeira linha vazia da coluna “A”
Range(“A” & ActiveSheet.Rows.Count).End(xlUp).Offset(1, 0).Select
‘Insere as informações na coluna correspondente
‘onde 0 corresponde “A”, 1 corresponde “B” e assim por diante
ActiveCell.Offset(0, 0).Value = TextBox1.Text
ActiveCell.Offset(0, 1).Value = TextBox2.Text
ActiveCell.Offset(0, 2).Value = TextBox3.Text
ActiveCell.Offset(0, 3).Value = TextBox4.Text
‘limpa os textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
‘retorna o cursor no textbox_1
TextBox1.SetFocus
End Sub
Reply
Reinaldo Coral Reply:
maio 21st, 2010 at 13:38
Sampaio,
Para que você possa editar os dados exibidos na tela de busca, sugiro que você modifique o seu código assim:
Private Sub CommandButton1_Click()
‘———– Atualiza as informações no banco de dados ————
Dim Linha As Long
Linha = MatrizResultados(SpinButton1.Value)
‘Insere as informações na coluna correspondente
‘onde 1 corresponde “A”, 2 corresponde “B” e assim por diante
Plan1.Cells(Linha, 1).Value = TextBox1.Text
Plan1.Cells(Linha, 2).Value = TextBox2.Text
Plan1.Cells(Linha, 3).Value = TextBox3.Text
Plan1.Cells(Linha, 4).Value = TextBox4.Text
‘limpa os textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
‘retorna o cursor no textbox_1
TextBox1.SetFocus
End Sub
Isto é apenas uma adaptação ao teu código, ok.
Abraço
Reply
Boa tarde, Reinaldo
Obrigado pelo retorno, e pela força, mas ja consegui resolver com esse código abaixo, ficou demais, nunca vi na Net nada tão bom quanto esse teu projeto.
Att. Sampaio
Private Sub CommandButton1_Click()
‘ NOVO CODIGO
‘Atualiza os dados na planilha
ActiveCell.Offset(0, 1).Value = Me.TextBox1
ActiveCell.Offset(0, 2).Value = Me.TextBox2
ActiveCell.Offset(0, 3).Value = Me.TextBox3
ActiveCell.Offset(0, 4).Value = Me.TextBox4
‘limpa os textbox
txt_Procurar = Empty
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
‘retorna o cursor no txt_procurar
txt_Procurar.SetFocus
End Sub
Reply
Reinaldo Coral Reply:
maio 23rd, 2010 at 16:54
Obrigado pela força ao meu trabalho.
Quanto ao teu código, que bom que deu certo, mas tome um certo cuidado, pois ele está baseado na célula ativa (ActiveCell), ou seja, se por acaso você clicar por engano, ou mover-se para outra célula, a célula ativa deixará de ser referente a tua pesquisa. Já no código que te passei, a referência não se quebrará até a execução de uma nova consulta, ok!!
Abraço.
Reply
Alias, Reinaldo, como faço para abrir o formulario e acionar automaticamente um botão comando btn_novo segue o código abaixo:
A idéia é quando abrir o formulário ele rode esta macro automaticamente e deixe o formulario pronto para receber novo cadastro e assim evitar cadastro em local indesejado;
Private Sub btn_novo_Click()
‘envia para a textbox e procura
txt_Procurar = (“Novo Cadastro”)
If Me.txt_Procurar.Text = “” Then
MsgBox “Digite um valor para a pesquisa”
Else
Call ProcuraPersonalizada(Me.txt_Procurar.Text)
End If
‘retorna o cursor no txt_procurar
TextBox1.SetFocus
End Sub
Abçs
Sampaio
Reply
Reinaldo Coral Reply:
maio 23rd, 2010 at 16:49
Sampaio,
Chame a rotina deste botão de comando no Evento de inicialização do formulário, ok.
Private Sub UserForm_Initialize()
Call btn_novo_Click
End Sub
Reply
Obrigado Reinaldo, deu tudo certo, valeu pela dica
Abraços Sampaio
Reply
Olá Reinaldo, em primeiro lugar este modelo eu venho procurando há 1 ano e meio.
Meus parabéns, me ajudou muito.
O problema é quando eu peço para procurar os dados em uma única coluna, coloquei o comando que você mencionou acima mas dá erro de sintaxe. Veja:
‘Executa a busca
Set Busca = Plan2.Range(“B:B”).Find(What:=TermoPesquisado, After:=Range(“A1″), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
No meu caso estou pedindo para buscar na planinha 2, até ai tudo bem, mas ando peço para buscar na coluna B que é onde estão os nomes (desejo filtrar apenas isso) dá este erro.
Estou fazendo errado?
Grato
Reply
Reinaldo Coral Reply:
maio 28th, 2010 at 14:26
Tente modificar também a parte da instrução que diz After:=Range(“A1″) por:
After:=Plan2.Range(“B1″)
Espero ajudar,
abçs
Reply
estou usando o teu modelo só que tenho dados em duas planilhas na plan2 e na plan3 e gostaria de poder usar a opçao procurar mas nas duas planilhas ao mesmo tempo pois elas têm a mesma estrutura o que que pretendo procurar esta na mesma coluna. ADOREI o teu modelo é o melhor que já vi.
Obrigado por o teres disponibilizado
Reply
Reinaldo Coral Reply:
maio 28th, 2010 at 20:55
Olá. Fico agradecido pelo comentário.
Quanto a teu pedido, aproveitei e postei um artigo explicando que soluciona o teu problema.
http://www.exceldoseujeito.com.br/2010/05/28/pesquisa-personalizada-simples-2-a-missao/
Abraço
Reply
[...] a inúmeros comentários e pedidos acerca da ferramenta que disponibilizei no artigo sobre pesquisa simples, hoje, estou incrementando algumas melhorias de acordo com as sugestões enviadas para [...]
obrigada amigo era mesmo o que eu precisava. Cumprimentos
Reply
mais uma pergunta o que significa;
No modulo1 da pesquisa personalizada2 diz:
Sub teste()
Dim sword As String
Do While Len(sword) < 25000
sword = sword & "A"
Loop
MsgBox Len(sword)
End Sub
concretamente o que significa?
Agradecia muito uma explicação pois não sei para que serve. Cumprimentos
Reply
Reinaldo Coral Reply:
maio 30th, 2010 at 17:31
Polux,
Foi esquecimento meu no código… era um estudo a parte que eu estava fazendo… nada tem a ver com este artigo.
Perdoe-me, mas já foi removido do arquivo para download.
Abraço e obrigado pelo alerta!!!
Reply
Tao simples e de facil didatica , tentar programar no vb pareceia impossivel,depois de ler alguns artigos teus acreditei que poderia aprender e realmente aprendi…parabens pela forma simples de ensinar …muito obrigado por me fazer ver que posso aprender. excelente materia e tutorial.
Reply
Reinaldo Coral Reply:
junho 27th, 2010 at 10:18
Valeu Jose,
Seu comentário é muito edificante.
Muito obrigado.
Abraço e bons estudos…
Reply