Ir ao conteúdo
  • Cadastre-se

Comando de pesquisa em vba


Posts recomendados

Olá,

Boa tarde.

 

Estou criando um sistema e um dos comandos que acrescentei foi o "Pesquisar"
Até agora ele realiza uma pesquisa de acordo com o código digitado e trás na tela, onde o registro pode ser alterado.

O que eu gostaria de fazer agora é: conseguir realizar essa pesquisa digitando qualquer um dos campos do formulário. Por exemplo: O número de expediente ou nome do responsável.

Porém, se existirem mais de um registro com o mesmo dado ele traria uma lista com os registros, onde poderia escolher aquele que eu desejo visualizar e alterar.

Alguém pode me ajudar?

Exemplo.xlsm

Link para o comentário
Compartilhar em outros sites

@Ma como disse o colega CasaDoHardware, o ideal seria indicar qual o campo que voce deseja pesquisar. 

 

Bom mas como disse nao quer usar esta opcao, então eu fiz de uma forma que a rotina ira pesquisar o campo de acordo com o textbox que estiver preenchido.

Ex se o textbox "txtID" estiver vazio a macro pesquisará pelo "txtExpediente" e assim seguindo esta sequencia, o que estiver preenchido ira pesquisar. 

E para exibir mais de um registro eu inseri um Listbox e ao cliclar duas vezes sobre o registro a macro insere o registro em usas respectivas textbox.

Veja se lhe atende

Exemplo-Basole.xlsm

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

No meu post, no seu exemplo no Listbox eu inseri 6 campos. De acordo com que voce postou, agora esta com 10 campos ->    "  Me.ListBox1.List(ListBox1.ListIndex, 9) " 

Pode ser que o erro esteja ai. 

Se puder postar seu exemplo com as alteracoes que ja fez, fica mais fácil de entender o que esta gerado esse error. 

Link para o comentário
Compartilhar em outros sites

Olá,

 

Então...o que eu fiz foi inserir o código em um outro form que eu tinha. O que eu percebi é: Se o registro ainda não possui informações nesse campo, quando eu realizo a busca e dou um duplo clique ele aparece esse erro.

Caso já tenha informações ele passa sem problemas.

Link para o comentário
Compartilhar em outros sites

@Ma Coloque uma condicao no evento Double-Clck, para se o listbox estiver vazio a rotina encerra: 

Isso vai evitar o error que voce citou 

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If Me.ListBox1.ListCount = 0 Then Exit Sub ' condicao p se estiver vazio o listbox a rotina e encerrada
Me.txtID.Text = ListBox1.List(ListBox1.ListIndex, 0)
Me.txtDataRecebimento.Text = ListBox1.List(ListBox1.ListIndex, 1)
Me.txtExpediente.Text = ListBox1.List(ListBox1.ListIndex, 2)
Me.txtDataEntrega.Text = ListBox1.List(ListBox1.ListIndex, 3)
Me.txtResponsavel.Text = ListBox1.List(ListBox1.ListIndex, 4)
Me.cbostatus = Me.ListBox1.List(ListBox1.ListIndex, 5)

End Sub

 

Link para o comentário
Compartilhar em outros sites

Boa noite,

 

Eu removi a propriedade "Text" do Comobobox "Me.cbostatus" no codigo, era isto que estava gerando o error.

Acrescentei tb. uma condicao para que se o listbox estiver vazio ao inserir o double-Click nao gere error: 

"If Me.ListBox1.ListCount = 0 Then Exit Sub"

Eu desabilitei a funcao "fMatch" pois esta funcao estava impedindo a pesquisa por outros campos que nao fosse o Me.txtID.

E tb. alterei na funcao Find de XlWhile para XlParts para ter a possibilidade tb. de pesquisar por parte do termo, e nao pelo nome exato. 

 

teste-Basole.xlsm

Link para o comentário
Compartilhar em outros sites

Galera,

Boa tarde.

 

Estou com outros dois problemas no meu código e já tentei de todas as formas e não dá certo.

Um deles é na hora de pesquisar um registro (Erro na aba Demandas Internas) e o outro no botão de excluir. (Aba Auditoria).

Segue exemplo.

 

Obrigada mais uma vez!

teste_vba.xlsm

O problema em excluir o registro acontece as vezes, no seguinte trecho do código:

Private Sub btnExcluir_Click()

     'Declarar a variável Resp para receber uma resposta
     Dim Resp As Integer
    
     'Fazer a busca do registro digitado pelo usuário
     With Worksheets("Auditoria").Range("A:A")
         Set c = .Find(txtID.Value, LookIn:=xlValues, LookAt:=xlWhole)
     End With
    If Not c Is Nothing Then
         Resp = MsgBox("Tem certeza que deseja excluir o " & _
         "Registro?", vbYesNo, "Confirmação")
         If Resp = vbYes Then
            c.Select
             Selection.EntireRow.Delete
             'Limpar as caixas de texto
            txtID = Empty
            txtDataRecebimento = Empty
            txtNomeEmpresa = Empty
            txtCNPJ = Empty
            txtDataSolicitada = Empty
            txtNCarta = Empty
            txtAuditores = Empty
            txtDataEnvio = Empty
            txtResponsavel = Empty
            cbostatus = Empty
            ListBox1.Clear
         End If
     End If
End Sub

Link para o comentário
Compartilhar em outros sites

Bom dia @Ma

Um dos erros que esta apresentando aqui pra mim quando pesquisa, esta aqui:   .List(y, 10) = ws1.Range("K" & i).Value

O motivo é que o Listbox suporta no maximo 10 campos(colunas). Talvez a solucao seria descartar algum campo da planilha que sera mostrado no listbox. Outra opção caso as maquinas que serão rodados esta planilha tenha instalados o "Listview". O Listview nao tem esta limitacao.

 

Segue em anexo com as alteracoes: 

A pesquisa e a exclusão agora nao estão apresentando erros.

 

teste_vba-Basole.xlsm

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

Olá pessoal!

Tudo bem? 

 

Utilizei esta última planilha de exemplo, porque é realmente o que eu preciso.

No entanto, eu não sei se faz alguma diferença entre excel para mac e windows, mas aqui, no mac, se abro a planilha não há como acessar o formulário. E se crio um botão pra acessar o formulário, aparece o erro 1004 (tempo de execução). Estou usando essa planilha do Basole, logo acima ( a última que ele postou).

 

Desde já, agradeço muito, porque se rodar aqui é tudo o que eu preciso. :) 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!