sexta-feira, 5 de novembro de 2010

Olá galera, nesse post irei falar sobre o VBA, nele criaremos um formulário, no qual permite ao usuário digitar as informações no mesmo, e ser colocado na planilha do Excel.
Então, mãos a obra!

Iremos criar uma nova Macro, que vamos a chamar de cadastro.
(Para exibir a tela de macros, use Alt+F8, ou na guia Exibição>Macros)




O nosso próximo passo, é chamar o nosso formulário que contém os campos necessário para o cadastro, então, primeiramente criaremos o nosso formulário:

O desenho do formulário, será mais ou menos da seguinte maneira:


Agora, na folha do Excel, criaremos os campos no qual serão adicionados os dados do formulário, conforme será programado:


Agora, o próximo passo, é chamar a UserForm1 quando a macro for iniciada.
No Visual Basic, selecione o Module1, e na sub cadastro, adicione o comando Userform1.Show, ficando da seguinte maneira:
Sub cadastro()
UserForm1.Show
End Sub

Agora chegou a hora de programar o formulário.

No evento initialize do nosso formulário, iremos programar da seguinte forma:
Private Sub UserForm_Initialize()
' Apagamos todo o texto das Textbox
txtNome.Value = ""
txtTelefone.Value = ""
txtEndereco.Value = ""
' adicionamos todos os itens da Combo cboCargo
With cboCargo
.AddItem "Administração"
.AddItem "Secretaria"
.AddItem "Vendas"
.AddItem "Marketing"
.AddItem "Transporte"
End With
' deixamos a combo sem opção padrão
cboCargo.Value = ""
' colocamos o foco na txtName
txtName.SetFocus
End Sub

*Lembre-se de verificar sempre o evento em que está programando.


Agora, o principal código do projeto, onde os dados serão colocados na tabela do Excel, de acordo com o que o usuário cadastrar no formulário, o código do botão OK, que chamei de cmdOK, fica da seguinte forma: (evento Click)


Private Sub cmdOK_Click()
' ativa a planilha chamada 'Plan1' do Excel
ActiveWorkbook.Sheets("Plan1").Activate
' seleciona a celula A1
Range("A1").Select
' o codigo a seguir, faz com que seja feita a verificação das celulas vazias,
' para ser colocado em sequencia de como foi programado, os campos que o usuario digitar
' praticamente, este é o principal código do projeto!
' o loop define a celula ativa, para os dados serem colocados em sequencia...
Do
If IsEmpty(ActiveCell) = False Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True
ActiveCell.Value = txtNome.Value
ActiveCell.Offset(0, 1) = txtEndereco.Value
ActiveCell.Offset(0, 2) = txtTelefone.Value
ActiveCell.Offset(0, 3) = cboCargo.Value
Range("A1").Select
End Sub

Agora, você pode testar seu projeto e ver o resultado:


Baixe este código, clicando aqui

Categories: ,

8 comentários:

  1. Emanuel Dias5.11.10

    muito bom cara, parabens pelo seu trabalho!
    perfeito

    ResponderExcluir
  2. Anônimo6.11.10

    Muito melhor usar uma base de dados do excel, eu gostei

    ResponderExcluir
  3. Anônimo16.12.10

    Olá sou iniciante e gostaria de saber onde acho o evento initialize?
    Obrigado pela atenção e pelo belo post.

    [ ]'s

    Ac

    ResponderExcluir
  4. Olá!
    Os eventos são mostrados nos objetos inseridos dentro de um formulário.. quando você clica duas vezes em um CommandButton por exemplo você recebe:

    Private Sub CommandButton1_Click()

    End Sub

    Na barra de cima da área de código, existem 2 caixas de opções, a que determina o objeto e a que determina o evento.
    Você pode alterar um evento manualmente se preferir:

    Private Sub UserForm_Initialize()

    Espero ter ajudado!

    ResponderExcluir
  5. Anônimo16.12.10

    Ok é claro que ajuda, mas resumindo preciso criar uma nova macro?

    ResponderExcluir
  6. Sim você vai criar uma macro chamada 'cadastro' e apenas alterar o evento do Formulário

    ResponderExcluir
  7. oi, boa tarde, faço parte de uma organização, e stou tentando criar uma planilha de cadastro de associados, será que você não poderia me ajudar.... é uma planilha muito simples, entendo muito de excel, mas não sei nada de VBA....

    ResponderExcluir
  8. Otimo tutorial, tem outros modelos mais avançados..

    ResponderExcluir