terça-feira, 19 de março de 2013

Excel VBA, Projeto Agenda Telefônica Parte 3...


CÓDIGO VBA PARA CADASTROS EM GERAL

Bom galera hoje irei dar continuidade ao post 2 do projeto Agenda Telefônica em VBA...

Quem não leu os posts 1 e 2, recomendo que leiam pois essa é a continuação deles assim fica mais fácil o entendimento e aprendizado...




PARTE III

PASSO A PASSO...

Abrir a pasta de trabalho que criamos nos posts anteriores 








Abrir também o Editor VBA (Alt + F11)...











CRIANDO O CÓDIGO...


Vamos abrir o módulo, para criarmos a nossa função que irá se chamar CADASTRO...



Dentro da função criada vamos por o seguinte código...




If frmagenda.TXT_NOME.Text = "" Then
MsgBox "NOME COMPLETO É OBRIGATÓRIO", vbExclamation
frmagenda.TXT_NOME.SetFocus
Exit Function
Else
End If

'O código acima serve para avisar o usuário quando a caixa de texto TXT_NOME estiver vazia, pois não é aconselhável cadastrar informações nulas...

'-----------------------------------------------------------------------------
If frmagenda.TXT_TELEFONE.Text = "" Then
MsgBox "TELEFONE É OBRIGATÓRIO", vbExclamation
frmagenda.TXT_TELEFONE.SetFocus
Exit Function
Else
End If

'O código acima faz a mesma coisa do primeira porém analisará a caixa de texto TXT_TELEFONE....

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

Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0") 'abre o banco de dados
Sql = "insert into [AGENDA$] (NUMERO,NOME,TELEFONE)VALUES ('" & frmagenda TXT_CODIGO & "','" & frmagenda TXT_NOME& "','" & frmagenda.TXT_TELEFONE& "')"

BANCO.Execute Sql
BANCO.Close
'---------------------------------------------------------------------------------
Módulo1.NUM_AUTO

'uma vez que efetuado o cadastro o código acima irá chamar a função NUM_AUTO para gerar o próximo numero a ser cadastrado

'--------------------------------------------------------------------------------
frmagenda.TXT_NOME.Text = ""
frmagenda.TXT_TELEFONE.Text = ""

frmagenda.TXT_NOME.SetFocus






Após isso devemos chamar esse código dentro do evento click do botão gravar, para isso basta dar um clique duplo nele, para abrir o seu código que se abre assim: 


no local marcado com um traço é onde vamos escrever o código:


módulo1.CADASTRO





pronto agora para testar é só executar o formulário e cadastrar as informações... 





EXPLICANDO O CÓDIGO...

PARA FAZER UM SEMELHANTE VOCÊ DEVERÁ APENAS TROCAR OS OBJETOS MENCIONADOS PELOS SEUS OBJETOS. O RESTANTE DO CÓDIGO É SÓ COPIAR E COLAR...

frmagenda = NOME DO USERFORM 





TXT_NOME = NOME DO OBJETO CAIXA DE TEXTO




TXT_TELEFONE = NOME DO OBJATO CAIXA DE TEXTO






MsgBox  = CHAMA UMA MENSAGEM EXIBINDO O TEXTO QUE ESTIVER DENTRO DOS PARENTESES...


AGENDA = NOME DA PLANILHA






NUMERO,NOME,TELEFONE = CAMPOS DA PLANILHA



('" & frmagenda TXT_CODIGO & "','" & frmagenda TXT_NOME& "','" & frmagenda.TXT_TELEFONE& "')" = CAMPOS NO FORMULÁRIO



É ISSO AÍ TROCANDO ESSAS INFORMAÇÕES PELAS SUAS O SEU PROJETO TERÁ QUE FUNCIONAR PERFEITAMENTE, MAS ATÉ VOCÊ CONHECER CADA LINHA DE CÓDIGO, FAÇA ESSE POST EXATAMENTE COMO DESCRITO DESDE A PARTE 1 ATÉ A 3, PARA VOCÊ APRENDER DE VERDADE A FAZER....




ATT; EDIVAN CABRAL

9 comentários:

  1. Olá Amigo,
    fiz tudo como ensinou, porem esta dantro erro na seguinte linha: (Dim BANCO As Database) aparece a mensagem de erro de compilação e fala que o tipo definido pelo usuário não é definido.

    e também toda a linha (Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0") 'abre o banco de dados
    Sql = "insert into [AGENDA$] (NUMERO,NOME,TELEFONE)VALUES ('" & frmagenda TXT_CODIGO & "','" & frmagenda TXT_NOME& "','" & frmagenda.TXT_TELEFONE& "')"
    fica em vermelho

    OBS: estou usando o Excel 2010.

    Abraços

    ResponderExcluir
  2. Olá boa tarde!


    Olha no post parte II, tem uma parte que fala sobre habilitar a referencia Microsoft DAO 3.6 Library , você fez isso também???? Pois esse erro geralmente dá por nao estar habilitada essa referencia, reveja os post 1 e 2, talvez você tenha feito alguma coisa de errado, ou mesmo ficou sem fazer alguma coisa, que eu acredito que seja a habilitação da referencia citada acima...

    Para maiores esclarecimentos caso não seja esse o problema mande seu exemplo no meu e-mail edivan.cabral@yahoo.com.br para eu analisar e te ajudar a corrigir...

    Obrigado, pelo comentário.. Edivan Cabral

    ResponderExcluir
  3. Deixe comentário depois dizendo se conseguiu ou não ok... Boa Sorte!

    ResponderExcluir
  4. olá Edvan,
    respondendo a duvida de Edmaxy

    na linha
    Sql = "insert into [AGENDA$] (NUMERO,NOME,TELEFONE)VALUES ('" & frmagenda TXT_CODIGO & "','" & frmagenda TXT_NOME& "','" & frmagenda.TXT_TELEFONE& "')"

    altera para
    Sql = "insert into [AGENDA$] (NUMERO,NOME,TELEFONE)VALUES ('" & frmagenda.TXT_CODIGO & "','" & frmagenda.TXT_NOME & "','" & frmagenda.TXT_TELEFONE & "')"

    ResponderExcluir
  5. Ok, valeu cara, nem reparei que a falta de espaço antes dos & é que copiei o código que fiz no Excel kkkk certamente a formatação do meu blog deve ter juntado... mas é isso aí obrigado pela observação...

    ResponderExcluir
  6. valeu edvan.
    eu só estou retribuindo o favor vc me fez...
    lembra da planilha de recibos?
    ME AJUDOU D+
    e agora to estudando pelo seu blog

    ResponderExcluir
  7. Muitíssimo obrigado... e continue lendo estou postando muito sobre VBA eu adoroooooooo!!! rsrsrsrsrsrs

    ResponderExcluir
  8. boa tarde! nao deu certo, aparece a seguinte mensagen "erro de compilacao
    somente comentarios podem aparecer apos end sub, end function ou end property"

    ResponderExcluir
  9. AMIGO, ACREDITO QUE VOCE DEVA VERIFICAR O CÓDIGO CRIADO, POIS ELE TEM QUE TERMINAR COM END SUB E NAO PODE MESMO TER NADA APÓS ISSO, POIS SE NAO FICA FORA DO PROCEDIMENTO, CASO PREFIRA MANDE SUA PLANILHA QUE VC FEZ ATÉ AÍ, PARA EU VER CERTINHO E TE FALAR.... VLW

    ResponderExcluir