CÓDIGOS MODELOS... FUNÇÃO PESQUISAR
Visitem meu novo blog:
https://programacaopassoapasso.wordpress.com/
Vejam o resultado esperado ao fim deste post....
Veja Links dos post relacionados a esse...
http://excelamador.blogspot.com.br/2013/03/funcao-vba-para-cadastros-parte-ii.html
a pasta criada nos post
anteriores e cadastrar umas
quatro informações...
______________________________________________________
Irei inserir 1 rótulo e uma
caixa de texto para digitarmos
o que vamos pesquisar...
rótulo = PESQUISAR
caixa de texto = TXT_PESQUISA
_________________________________________________________________________________
Inserir também um ListBox
que é onde serão exibidas as
informações pesquisadas...
vamos alterar a propriedade
(Name) dela para
LIST_PRODUTO...
_________________________________________________________________________________
Inserir três rótulos também
para servir de título para o
ListBox...
_________________________________________________________________________________
Alterar as propriedades do ListBox...
Definir a quantidade de colunas
e a largura de cada uma delas...
_________________________________________________________________________________
Bom o código modelo é esse vou marcar as partes que devemos atribuir os nossos objetos...
Function NOMEDAFUNÇÃO()
Dim i As Integer
Dim BANCO As Database
Dim TABELA As Recordset
Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0")
Set TABELA = BANCO.OpenRecordset("SELECT * FROM [NOME_DA_PLANILHA$] WHERE PESQUISAR_EM_QUAL_CAMPO LIKE '" & FORMULARIO.OBJETO_DA_PESQUISA & "*';")
FORMULARIO.OBJETOLISTBOX.Clear
Do Until TABELA.EOF
FORMULARIO.OBJETOLISTBOX.AddItem TABELA("CAMPO")
FORMULARIO.OBJETOLISTBOX.List(i, 1) = TABELA("CAMPO")
i = i + 1
TABELA.MoveNext
Loop
BANCO.Close
End Function
_______________________________________________________________________
Bom então
vamos copiar o
código acima e colar
dentro do nosso módulo...
____________________________________________________
Agora vamos alterar as
partes marcadas no código...
Function NOMEDAFUNÇÃO()
____________________________________________________
* FROM [NOME_DA_PLANILHA$] WHERE
Vejam que esse nome é referente ao nome da nossa aba na planilha... que criamos nos post anteriores...
____________________________________________________
WHERE PESQUISAR_EM_QUAL_CAMPO LIKE
____________________________________________________
LIKE '" & FORMULARIO.OBJETO_DA_PESQUISA & "*';")
____________________________________________________
FORMULARIO.OBJETOLISTBOX.Clear
Esse código (Clear) serve para limpar o ListBox, antes de inserir os dados da pesquisa, para não inserir novamente dados repetidos...
Então
FORMULARIO = UserForm1
OBJETOLISTBOX = LIST_PRODUTO...
____________________________________________________
FORMULARIO.OBJETOLISTBOX.AddItem TABELA("CAMPO")
____________________________________________________
List(i, 1) = TABELA("CAMPO")
O numero 1 após a "," no pedaço de código acima, indica que é a segunda coluna do ListBox e temos que informar qual será o campo de onde iremos puxar as informações...
Vamos por o segundo campo da planilha (PRODUTO)...
____________________________________________________
Como na nossa planilha temos três campos (NUMERO|PRODUTO|VALOR) irá faltar uma coluna para ser pesquisada, nesse caso vamos copiar a linha:
FORMULARIO.OBJETOLISTBOX.List(i, 1) = TABELA("CAMPO")
e a coluna vamos trocar para 2, sendo que será a terceira, já deu para perceber que o numero das colunas no ListBox começa do 0...
____________________________________________________
____________________________________________________
____________________________________________________
Vamos agora executar nosso projeto e fazer uma pesquisa...
Bom galera espero sinceramente que estejam gostando. Estou muito feliz com os comentários postados por vocês leitores. Continuem lendo e comentando que continuarei postando rsrsrsrsrs...
Abraços a todos e até a próxima postagem...
Edivan cabral....
Edvan,
ResponderExcluircomo posso colocar esse código para interromper uma macro?
se a célula A2 for vazia não executar a macro
se não for continuar
???
no ponto que deseja parar a macro ponha assim...
ResponderExcluirif plan1.range("A2").value = "" then
exit sub
else
end if
if plan1.range("A2").value = "" then 'aqui voce deve trocar plan1 pela referencia da sua planilha no projeto (suponhamos que sua ABA seja "EDIVAN" assim deve estar plan1(EDIVAN) aí você procura saber qual plan esta a célula que vai querer verificar...
Exit sub é o código que finaliza a macro
tenta aí se nao conseguir faço um post para você sobre o assunto...
vlw Edivan Cabral
era isso mesmo!!!
ResponderExcluirvlw d novo
Edivan, qual rotina devo colocar para que quando selecionar um produto na listbox o mesmo preencha os campos automaticamente para uma possivel alteração no produto.
ResponderExcluirNo meu blog tem um post sobre alterações,
ResponderExcluirhttp://excelamador.blogspot.com/2013/03/codigos-modelos-alteracoes-em-vba.html?token=OAJ6SD4BAAA.vtD94fw866pfMehCRPM9EA.hhVdsJNMMRxFTC1TtvHY9Q&postId=8738926445487480240&type=POST
faz exatamente isso, veja se consegue acessar o link se não procure por CODIGOS MODELOS... ALTERAÇÕES EM VBA...
Edvan obrigado, pelas dicas, estou a menos de um mês elaborando um projeto em vba, e estou indo bem graça ao seu blog, mais uma pergunta, a limite de coluna na listbox?, pois tentei 3 vezes e ocorre erro sempre na mesma linha
ResponderExcluirExemplo
UserForm1.LIST_PRODUTO.AddItem TABELA("N")
UserForm1.LIST_PRODUTO.List(i, 1) = TABELA("NOME")
UserForm1.LIST_PRODUTO.List(i, 10) = TABELA("PLACA") essa linha sempre da erro
Desde já obrigado!!
Na verdade o ListBox só tem espaço para 10 colunas mesmo, assim sendo só vai funcionar até o List(i,9) uma vez que a primeiro coluna é representada pelo Additem TABELA("N")... o que você pode estar fazendo é o seguindo rsrsr eu já fiz isso muito, tipo você quer uma coluna para PLACA e uma para "X" coluna as 2 na mesma coluna do ListBox exemplo:
ExcluirUserForm1.LIST_PRODUTO.List(i, 9) = TABELA("PLACA") & " " & TABELA("X")
desse modo tem as duas informações em uma unica coluna, sendo que o & " " & serve para dar um espaço entre uma informação e outra, aí o cabeçalho da coluna você coloca nas proximidades vai testando até chegar onde você quer...
Este comentário foi removido pelo autor.
ResponderExcluirTo com um pequeno problema, quando eu vou pesquisar um item, ele pesquina mas quando eu apago, aparece na lista todos os itens cadastrado, é algum erro meu, ou isso é da formula mesmo?
ExcluirEdvan boa tarde, estou com um grande problema e não encontro em nenhum lugar a resposta.
ResponderExcluireu criei uma userform, e nela tem uma TEXTBOX, que nela eu vou utilizar um leitor de codigo de barras e queria realiza a seguinte função, assim que eu bipar o meu codigo que tem 20 caracteres."ja limitei o textbox para maximo de 20 caracteres". ele ja jogasse essa informação do codigo automaticamente em uma celula do excel. sem eu ter que clicar no botão para executar esse comando.
se conseguir me ajudar agradeço muito.
Boa tarde..
Excluirfica assim o código
Range("A4").Value = suatext.Text
Edivan o meu nao rolou aparece um erro de compilação.
ResponderExcluirA depuração demarca a linha "Dim BANCO as Database"
Gustavo, rgustavo32@Hotmail.com
O que eu faço?
Aqui diz "Erro de compilação: O tipo definido pelo usuário não definido", como resolvo Edivan?
ResponderExcluir