quinta-feira, 21 de março de 2013

Excel na pratica.Códigos VBA para Cadastro...

CÓDIGOS VBA MODELOS...

FUNÇÃO PARA CADASTROS.

Boa tarde! galera no post anterior da série CÓDIGOS VBA MODELOS... ensinei a criar um numero crescente para ser usado como código de registro, para o cadastro que irei ensinar nesse post... espero que estejam gostando do meu blog...



Post anterir: CÓDIGOS VBA MODELOS... FUNÇÃO NUM_AUTO...


http://excelamador.blogspot.com.br.passo_a_passo_numero_automatico




Vamos abrir a pasta que criamos no post anterior para dar continuidade a mesma...


Agora iremos criar um segundo campo para o nosso banco de dados... 














que será onde vamos cadastrar produtos diversos...Assim o nosso titulo será PRODUTO...











Agora vamos no Editor VBA a caixa de texto criada no post anterior (que exibido o número auto...) temos que alterar a propriedade ENABLE dela para False.

Depois vamos criar outro Objeto caixa de texto para servir de referencia a esse campo novo (PRODUTO) criado na planilha...









Vamos inserir 2 Label (rótulos)para servir de tútulos para as caixas de texto criado...








Alterar a propriedade CAPTION de cada rótulo conforme imagem..


Inserir um botão de comando e alterar a propriedade CAPTION para GRAVAR:






Código modelo para cadastro...

Function CADASTRO()
If FORMULARIO.OBJETO.Text = "" Then
MsgBox " OBJETO É UM CAMPO OBRIGATÓRIO", vbExclamation
FORMULARIO.OBJETO.SetFocus     
Exit Function
Else
End If

Dim linha As Integer
Dim BANCO As Database
Dim TABELA As Recordset

Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0") 

Sql = "insert into [PLANILHA$] (CAMPO)VALUES ('" & FORMULARIO.OBJETO & "')"
BANCO.Execute Sql
BANCO.Close

MODULO.NUM_AUTO

FORMULARIO.OBJETO.Text = ""

FORMULARIO.OBJETO.SetFocus 

End Function

______________________________________________________

CADASTRO = NOME DA FUNÇÃO
OBJETO= NOME DO OBJETO…
PLANILHA= NOME DA PLANILHA
CAMPO= CAMPO DENTRO DA PLANILHA ONDE SERÃO GRAVADAS AS INFORMAÇÕES
FORMULARIO= NOME DO FORMULÁRIO ONDE SE ENCONTRA O OBJETO
MODULO= MÓDULO ONDE ESTÁ O CÓDIGO QUE GERA O NÚMERO AUTOMÁTICO...
NUM_AUTO= NOME DA FUNÇÃO QUE GERA O CÓDIGO AUTO. DENTRO DO MODULO ...

________________________________________________________________________________

COLOCANDO EM MINHA PASTA DE TRABALHO O CÓDIGO ACIMA...

Pois bem vou ir copiando parte por parte e explicar...


Function CADASTRO  ) 'aqui vai o nome da função que pode ser qualquer um...

Verifica se o OBJETO não está vazio
If FORMULARIO.OBJETO.Text = "" Then
MsgBox " OBJETOÉ UM CAMPO OBRIGATÓRIO", vbExclamation
FORMULARIO.OBJETO.SetFocus     
Exit Function
Else
End If



Colocando os meus objetos, o código acima ficará assim:




If UserForm1.TextBox2.Text = "" Then
MsgBox " PRODUTO É UM CAMPO OBRIGATÓRIO", vbExclamation
UserForm1.TextBox2.SetFocus
Exit Function
Else
End If



Ao executa-lo se o Textbox1 estiver vazio exibirá a seguinte mensagem...












UserForm1  = nome do nosso formulário 













TextBox2= nome do nosso objeto no formulário...











PRODUTO = nome do campo na planilha...







esse mesmo código é repetido quantas vezes for necessárias de acordo com o número de caixas de texto que estivermos usando em nosso projeto de modo que não seja efetuado o cadastrado se alguma caixa de texto estiver vazia e do mesmo modo avisando ao usuário qual  é, por meio da mensagem exibida...


________________________________________________________________________________

Sql = "insert into [PLANILHA$] (CAMPO)VALUES ('" & FORMULARIO.OBJETO& "')"


A linha acima é responsável pelo cadastro  nela você tem que informar em qual planilha será feito o cadastro???? que no nosso exemplo será... TESTE_NUMERO então a linha ficará assim

Sql = "insert into [TESTE_NUMERO$] (CAMPO)VALUES ('" & FORMULARIO.OBJETO& "')"



CAMPO aqui devemos dizer em quais campos serão gravadas as informações, vamos gravar então nos campos NUMERO e PRODUTO de nossa planilha...

então a linha ficará assim agora...

Sql = "insert into [TESTE_NUMERO$] (NUMERO,PRODUTO)VALUES ('" & FORMULARIO.OBJETO& "')"


Veja que para separar um  campo do outro basta por a virgula entre eles.

______________________________________________________


FORMULARIO aqui devemos informar qual UserForm está o Objeto que terá a informação... no caso é o UserForm1...


então a linha ficará assim agora...

Sql = "insert into [TESTE_NUMERO$] (NUMERO,PRODUTO)VALUES ('" & UserForm1.OBJETO& "')"


______________________________________________________


OBJETO aqui informamos ao código onde está a informação que vai ser gravada... que no nosso caso como o primeiro campo do código é NUMERO  então o primeiro objeto será o TextBox1... 


então a linha ficará assim agora...

Sql = "insert into [TESTE_NUMERO$] (NUMERO,PRODUTO)VALUES ('" & UserForm1.TextBox1 & "')"





e por fim vamos por o objeto que irá por as informações no campo PRODUTO que será o TextBox2...








então a linha ficará assim agora...

Sql = "insert into [TESTE_NUMERO$] (NUMERO,PRODUTO)VALUES ('" & UserForm1.TextBox1 & "','" & UserForm1.TextBox2 & "')"


______________________________________________________



MODULO.NUM_AUTO (aqui devemos chamar a função código automático criado no post mencionado no inicio deste) 

FORMULARIO.OBJETO.Text = "" (esse código serve para limpar a caixa de texto)

FORMULARIO.OBJETO.SetFocus  (esse código serve para levar o ponteiro do mouse novamente para o objeto citado nele)
______________________________________________________


Veja como ficará o código completo para gravar esses 2 objetos na planilha...



Function CADASTRO()
If UserForm1.Textbox2.Text = "" Then
MsgBox " PRODUTO É UM CAMPO OBRIGATÓRIO", vbExclamation
UserForm1.Textbox2.SetFocus     
Exit Function
Else
End If

Dim linha As Integer
Dim BANCO As Database
Dim TABELA As Recordset

Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0") 

Sql = "insert into [TESTE_NUMERO$] (NUMERO,PRODUTO)VALUES ('" & UserForm1.TextBox1 & "','" & UserForm1.TextBox2 & "')"


BANCO.Execute Sql
BANCO.Close


Módulo1.NUMERO


UserForm1.Textbox2.Text = ""

UserForm1.Textbox2.SetFocus 

End Function

______________________________________________________

Vamos copiar e colar o código dentro do módulo1 logo abaixo da função NUMERO...




_________________________________________________________________________________



Vamos chamar essa função dentro do botão no evento Click...



_____________________________________________________

Pronto agora é só rodar o formulário e testar...

Estando tudo certo salvem o trabalho que irei acrescentar uma terceira coluna ao cadastro a de Valor dos Produtos...

Não percam o próximo post será voltado para colocar a coluna valor, assim você conseguirá cadastrar quantas informações você precisar... e também darei inicio ao assunto pesquisa... onde ao cadastrar um determinado produto o mesmo já apareça em   uma lista dentro do próprio formulário...

Até mais...

Deixem comentários dizendo se conseguiram ou não, no caso de dúvidas será um prazer analisa-las e ajudar a compreender cada passo postado aqui...

At; Edivan Cabral...



Códigos VBA modelo... Para gerar Numero crescentes automaticamente....

CÓDIGOS VBA MODELOS...


FUNÇÃO NUM_AUTO

Bom galera com a intenção de agilizar o tempo e o aprendizado estou desenvolvendo Códigos Modelos onde vamos trocar apenas as referências do código e em alguns segundos terá um código funcionando perfeitamente...

O código de hoje é o mesmo que usei nos dois posts que fiz sobre cadastro, o mesmo foi usado para gerar um numero de registro para cada item cadastrado...

Quem não viu os post sobre Cadastro tirem um tempinho e leiam pois é fundamental praticar para entender como funciona e assim poder caminhar de acordo com sua necessidade...


Vejam o código e em seguida farei um exemplo usando-o em uma planilha.... a qual sugiro que salvem para darmos continuidade nos próximos posts...


Function NOME()
Dim BANCO As Database
Dim TABELA As Recordset
Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0")
Set TABELA = BANCO.OpenRecordset("PLANILHA$") 
If TABELA.EOF And TABELA.BOF Then
    FORMULARIO.OBJETO = 1
Else
    TABELA.MoveLast
    FORMULARIO.OBJETO = Format(TABELA("CAMPO") + 1)
End If
End Function

EXPLICANDO AS MARCAÇÕES

(todo o restante do código é só copiar e colar)

NOME = NOME PELO QUAL A FUNÇÃO SERÁ CHAMADA QUANDO HOUVER NECESSIDADES...

PLANILHA = NOME DA PLANILHA QUE RECEBERÁ O CÓDIGO CRIADO NA HORA DA GRAVAÇÃO...

FORMULARIO = NOME DO USERFORM...

OBJETO = NOME DO OBJETO O QUAL IRÁ EXIBIR O NÚMERO...

CAMPO = CAMPO NA PLANILHA ONDE CONTEM AS INFORMAÇÕES DO NUMERO AUTOMÁTICO...



NA PRÁTICA


Bom então vamos por em prática o código modelo...

Não vou fazer o passo a passo, pois tenho 2 posts divididos em 3 partes cada, que explica como fazer cada ação descrita neste post...

Abrir o Excel e salvar como "Pasta de trabalho Habilitada para Macros"



Habilitar a referencia "Microsoft DAO 3.6 Object Library"

Veja como se faz em meu blog no post :
http://excelamador.blogspot.com.br/2013/02/ativando-referencia-microsoft-dao-36.html


Alterar o nome da planilha... 
Para esse exemplo vou colocar teste_numero... 




Colocar o titulo do nosso campo na planilha...

que nesse exemplo será NUMERO






Finalizamos a parte da planilha agora vamos para o Editor VBA...


Abrir o Editor VBA (Alt + 11)...








6 º Inserir um UserForm...



7 ° Inserir uma caixa de texto (TextBox)...




8 º Inserir um Módulo...














9 ° Copiar e colar o código modelo dentro do módulo1...



Agora devemos trocar as referencias, pelas respectivas em nosso projeto.

Vamos iniciar trocando o nome da Função de NOME para NUMERO...








PLANILHA ... Devemos informar ao código em qual planilha ele fará referência para o código...em nosso exemplo é teste_numero



CAMPO ... Devemos informar também qual campo na planilha é a referência...que é o campo NUMERO para esse exemplo





FORMULARIO ... Devemos também dizer qual será o Userform usado no código, pois como o código está escrito dentro de um módulo, então o não irá encontrar o formulário sem a sua descrição... 















OBJETO ... O objeto o que irá mostrar na tela o numero do registro a ser gravado...








Pronto agora é só abrir o código do formulário no evento initialize e chamar a função criada dentro do módulo 1...






Ao executar o UserForm o resultado deverá ser 1, sendo que ainda não tem nenhuma informação em nosso banco de dados....


Vou inserir números de 1 a 3 na tabela e rodar de novo o formulário...


Bom é isso aí, vai sempre gerando um numero após o ultimo na tabela...


Espero que estejam gostando, e amanha se sobrar tempo irei pegar a partir desse ponto, dando continuidade nessa mesma pasta de trabalho, então se você quiser pode salvar para usar a mesma, assim o arquivo vai ficando como modelo para eventuais consultas...

O próximo post pretendo mostrar o modelo de código que fiz para cadastro lembrando que é exatamente igual ao código mostrado nos 2 posts que fiz relacionados com o assunto cadastro...

Se não viu ainda tire um tempo e leia, pois é fundamental...

Abraços a todos os leitores, dúvidas deixem comentários ou mandem e-mail para edivan.cabral@yahoo.com.br

VEJAM O LINK DA 

PARTE II



At; Edivan Cabral


quarta-feira, 20 de março de 2013

Excel passo a passo mensagem com data e hora atual...

MSGBOX COM DATA E HORA ATUAL PASSO A PASSO...

Olá galera, neste post mostro mais uma linha de código VBA que as vezes eu uso em meus projetos aqui que são os formatos de  hora e a data...

Bom a ideia é fazer surgir na tela uma mensagem semelhante a essa ...











PASSO A PASSO...

1 ° Abrir o Excel kkkkkkk

2º Abri o Editor Visual Basic (Alt + F11)



3º Inserir um Formulário...



Vamos excluir a propriedade CAPTION do formulário criado...



O mesmo ficará assim..







Vamos inserir 2 labels (rótulos)... para exibir a hora e a data atual...











Vamos inserir também um botão de comando que terá como função fechar o nosso Userform...








A propriedade CAPTION do botão vamos mudar para FECHAR...


Pois bem vamos dar um clique duplo em qualquer área vazia do UserForm para abrir o editor de códigos....



Agora vamos trocar o evento do código _Click para INITIALIZE dessa forma o código será executado ao iniciar o formulário e não ao clicar sobre ele...


o código que vamos user é o seguinte

me.label1.caption = "HORA ATUAL : " & TIME

me.label2.caption = "DATA ATUAL : " & DATE



Pronto agora vamos dar 2 click no botão de comando para abrir o editor de código e será aberto assim



Private Sub CommandButton1_Click()

End Sub


é incluir comando

Me.Hide

que ao receber o click ele irá fechar o formulário...

Bom é isso e até o próximo, espero que todos estejam gostando das postagens pois é com todo prazer que dedico o meu tempo preparando elas para que vocês leitores possam aprender cada dia mais e também aprender com as dúvidas e comentários deixados por vocês...


At; Edivan Cabral
Abraços...

FÓRMULA PROC PASSO A PASSO NA PRÁTICA...

PROC PASSO A PASSO....

Olá a todos no post de hoje tenho o seguinte objetivo, eu criei uma planilha aqui para ilustrar passo a passo o funcionamento da fórmula PROC...

Criando a planilha para esse exemplo....

A Plan1 vou alterar para PEDIDOS...




Plan2 será PREÇOS...





Plan3 IMPRIMIR NOTA...




Na planilha PEDIDOS na linha 1 irei colocar COD CLIENTES seguido de números de 1 a 7...

na linha 2 irei colocar o cabeçalho da minha tabela, sendo a primeira coluna PRODUTOS e o restante com nome de clientes fantasias...




Na coluna A irei colocar os nomes dos meus produtos....









Coloquei a borda entre a tabela e na coluna de total coloquei uma fórmula para somar a linha...



pronto agora é só copiar a formula nas células abaixo e copiar toda a tabela e colar na aba PREÇOS...









a planilha IMPRIMIR NOTA não fiz o passo a passo, mas é muito simples construí-la...


Vejam... tenho 3 
planilhas, a da imagem ao lado é onde vão os pedidos dos nossos supostos cientes...








Coloquei informações bem simples mesmo apenas para mostrar o passo a passo...


A seguinte é exatamente igual porém é onde eu vou colocar os preços de cada produto para cada cliente...






Já a terceira é a onde irei puxar essas informações, tipo se fosse um formulário de impressão bem básico mesmo... que ao digitar o código do cliente (na célula amarela) as informações sejam preenchidas de acordo com o cliente chamado...






Passo a passo...

Bom então na plan3 (IMPRIMIR NOTA)... Na célula B5 (marcada em amarelo) é onde iremos digitar o código de cada cliente...  e as informações como nome, qtd e preço deverão ser carregadas a partir do nosso banco de dados planilhas (PEDIDOS e PREÇOS)









Na coluna QTD (coluna B) , a partir da primeira linha da tabela (linha5)... 



vamos por a fórmula PROC... para buscar aquele código na plan1(PEDIDOS) e nos retornar o valor referente ao PRODUTO_1....



=SE($B$1="";"";PROC($B$1;PEDIDOS!$B$1:$H$1;PEDIDOS!B3:H3))

FÓRMULA PASSO A PASSO

=SE($B$1="";"";
se a célula B1 for igual a nadafazer nadase não fazer


PROC($B$1;PEDIDOS!$B$1:$H$1;PEDIDOS!B3:H3))

procurar o valor da célula B1 ( B1está entre os cifrões por que assim quando você copiar e colar a fórmula não irá mudar para B2,3,4 etc)

;  procurar onde?

na planilha PEDIDOS no intervalo B1 até H1, os cifrões servem para congelar esse intervalo de modoque não mude ao copiar e colar

e retornar o valor que estiver na mesma coluna do valor encontrado, 

na planilha pedido também porém na  linha 3...








Pronto ao copiar e colar a fórmula para as demais células da coluna QTD tudo ficará igual, só irá mudar a parte final  da fórmula proc... sendo que o número da   linha que será retornada a informação irá descer sempre uma linha abaixo em relação a tabela pedidos...


se você analisar com cuidado verá que somente a referencia PEDIDOS!B3:H3 foi alterada para 4,5,6,7 etc...






Já a fórmula para a coluna VL_UNIT é exatamente igual só irá mudar a a planilha a qual irá puxar as informações

=SE($B$1="";"";PROC($B$1;PREÇOS!$B$1:$H$1;PREÇOS!B3:H3))


pois bem agora é só copiar e colar para as células abaixo...


Na célula D5 coloquei a seguinte fórmula...

=SE(B5="";0;B5*C5)



que irá verificar se a célula B5 é igual a vazia se for fará 0; caso não seja irá multiplicar o valor de B5 pelo valor de C5...

pronto agora vamos copiar e colar na demais abaixo...


na célula D22 coloquei uma fórmula simples de soma mesmo

=soma(D5:D19)


pronto agora vamos testar digitando uma código entre 1 e 7 na célula B5...



   Planilha IMPRIMIR NOTA               Planilha PEDIDOS



é isso aí agora é só ir treinando até se adaptar com a fórmula e poder criar de acordo com sua necessidade...


Att; Edivan Cabral...