Do Básico ao Avançado
Home | Tutoriais | Artigos |Contato

Home > VBA > Como preencher uma tabela através de um formulário

Como preencher uma tabela através de um formulário



Neste tutorial mostrarei como preencher uma tabela através de um formulário criado no Word 2007 através do Editor do Visual Basic.

O objetivo principal deste tutorial é mostrar ao leitor como preencher uma tabela do Word através de um formulário VBA.

Mas a partir desta aprendizagem você poderá criar outras aplicações e adequá-los a quaisquer outros documentos, conforme suas necessidades.

Primeiramente vamos criar o documento que conterá a tabela que receberá os dados do Formulário, como o da imagem abaixo:


tabela do Word


Após criar o documento com a tabela, dê um nome salve-o como Modelo Habilitado para Macro do Word



Construindo a Interface (Formulário)


Abra o Editor do Visual Basic e insira um Formulário (UserForm1).


Inserir UserForm


Na Janlea de Propriedades, altere as seguintes propriedades:


Name: frmResultadoFinal

Caption: Resultado Final

Height: 246,75

Width: 303




Agora devemos adicionar alguns controles ao formulário. Para esse formulário necessitaremos dos seguintes controles:


Quant Controle
2 Frame(Quadro)
6 Label(Rótulo)
5 TextBox(Caixa de Texto)
1 ComboBox(Caixa de Combinação)
3 CommandButton(Botão de Comando)

Na Caixa de Ferramentas clique na ferramenta Quadro (Frame1) para adicionar o primeiro Quadro ao formulário e altere as seguintes propriedades:


Caption: Resultado Final por Série

Font: Tahoma, Tamanho 11

Height: 204

Left: 12

Top: 12

Width: 276


Na Caixa de Ferramentas clique na ferramenta Quadro (Frame2) para adicionar o segundo Quadro dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption:(Deixe esta propriedade em branco)

Height: 108

Left: 180

Top: 48

Width: 84


Ficará como na imagem abaixo:


UserForm


Continuando com o processo de criação do Formulário, novamente na Caixa de Ferramentas clique na ferramenta Rótulo (Label1) para adicionar o primeiro Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption: Selecione a Série/Ano:

Font: Tahoma, Tamanho 11

Height: 18

Left: 12

Top: 18

Width: 102


Na Caixa de Ferramentas clique na ferramenta Rótulo (Label2) para adicionar o segundo Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption: Alunos Matriculados

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 48

Width: 100


Na Caixa de Ferramentas clique na ferramenta Rótulo (Label3) para adicionar o terceiro Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption: Alunos Transferidos

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 78

Width: 100


Na Caixa de Ferramentas clique na ferramenta Rótulo (Label4) para adicionar o quarto Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption: Alunos Evadidos:

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 107,95

Width: 100


Na Caixa de Ferramentas clique na ferramenta Rótulo (Label5) para adicionar o quinto Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption: Alunos Retidos:

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 138

Width: 100


Na Caixa de Ferramentas clique na ferramenta Rótulo (Label6) para adicionar o sexto Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Caption: Alunos Promovidos

Font: Tahoma, Tamanho 11

Height: 20

Left:12

Top: 168

Width: 100


Ficará como a imagem abaixo:


UserForm






Na Caixa de Ferramentas clique na ferramenta Caixa de Combinação (ComboBox) para adicionar uma Caixa de Combinação dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:


Font: Tahoma, Tamanho 11

Height: 20

Left: 120

Top: 18

Width: 126


Ficará como na imagem abaixo:


UserForm


Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox1) para adicionar a primeira Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:


Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 48

Width: 54


Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox2) para adicionar a segunda Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:


Font: Tahoma, Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 78

Width: 54


Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox3) para adicionar a terceira Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:


Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 108

Width: 54


Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox4) para adicionar a quarta Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:


Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 138

Width: 54


Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox5) para adicionar a quinta Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:


Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 168

Width: 54


Outras propriedades desta Caixa de Texto serão alteradas quando o Formulário for inicializado (evento initialize).


Deverá ficar como na imagem abaixo:


Criando Formulário


Agora para finalizar a interface adicionaremos três botões de comando ao nosso formulário.


Na Caixa de Ferramentas clique na ferramenta Botão de Comando (CommandButton1) para adicionar o primeiro Botão de Comando no formulário e posicione-a dentro do segundo Quadro (Frame2), em seguida altere as propriedades:


Caption: Adicionar

Font: Tahoma, Tamanho 11

Height: 24

Left: 6

Top: 12

Width: 66


Na Caixa de Ferramentas clique na ferramenta Botão de Comando (CommandButton2) para adicionar o segundo Botão de Comando no formulário e posicione-a dentro do segundo Quadro (Frame2), em seguida altere as propriedades:


Caption: Limpar

Font: Tahoma, Tamanho 11

Height: 24

Left: 6

Top: 42

Width: 66


Na Caixa de Ferramentas clique na ferramenta Botão de Comando (CommandButton4) para adicionar o terceiro Botão de Comando no formulário e posicione-a dentro do segundo Quadro (Frame2), em seguida altere as propriedades:


Caption: Fechar

Font: Tahoma, Tamanho 11

Height: 24

Left: 6

Top: 72

Width: 66


Com isso, concluímos então a criação da interface da nossa aplicação a qual, seguindo todos os passos acima, deverá ficar com a mesma aparência da imagem abaixo:


Formulário






Iniciaremos agora a criação do código que será responsável pelo bom funcionamento da aplicação e fará todo trabalho pesado por trás do formulário.


Na Janela de Projeto selecione o Formulário (frmResultadoFinal) e clique em Exibir código ou use o botão direito do mouse.


Exibir Código


Na caixa objeto selecione UserForm.


UserForm


Em procedimento selecione Initialize:


Evento Initialize


Dentro de evento Initialize do nosso Formulário (frmResultadoFinal) adicione o seguinte código.


' Adiciona itens à Caixa de Combinação
With ComboBox1
.AddItem ""
.AddItem "5ª Série/6º Ano"
.AddItem "6ª Série/7º Ano"
.AddItem "7ª Série/8º Ano"
.AddItem "8ª Série/9º Ano"
End With
With TextBox5
.Enabled = False
.BackColor = &H8000000F
.SpecialEffect = fmSpecialEffectEtched
End With



Ficará como na imagem abaixo:


Código VBA


Selecione a Caixa de Texto (TextBox1), clique com o botão direito do mouse sobre ela e em seguida clique em Exibir código.


Exibir Código


Na Janela de Código selecione o procedimento KeyPress.


KeyPress


Dentro do Evento KeyPress adicione o código abaixo:


'só aceita digitação de números
Select Case KeyAscii
Case 8, 48 To 57
Case Else
KeyAscii = 0
End Select



Deverá ficar como na imagem abaixo:


Código VBA


Selecione as demais Caixas de Textos e execute a mesma operação em cada uma delas. Deverá ficar como na imagem abaixo:


Código VBA


No formulário selecione o Botão de Comando (CommandButton1), clique com o botão direito do mouse e depois clique em Exibir Código.


Exibir Código


No Evento Click do Botão adicione o seguinte código:


On Error GoTo CommandButton1_Click_Err 'Tratamento de erro

'Validação
If ComboBox1.Text = "" Then
MsgBox "Selecione a série.", vbOKOnly, "Resultado Final"
Exit Sub
ComboBox1.SetFocus
ElseIf TextBox1.Text = "" Then
MsgBox "Informe o número de alunos matriculados", vbOKOnly, "Resultado Final"
Exit Sub
TextBox1.SetFocus
End If
If TextBox2.Text = "" Then
TextBox2.Text = "0"
End If
If TextBox3.Text = "" Then
TextBox3.Text = "0"
End If
If TextBox4.Text = "" Then
TextBox4.Text = "0"
End If

'Calcula o total de alunos promovidos
TextBox5.Value = Val(TextBox1 - TextBox2 - TextBox3 - TextBox4)

'Limpa a tabela para receber novos dados
With ActiveDocument.Tables(1)
.Cell(Row:=1, Column:=1).Range.Delete
.Cell(Row:=3, Column:=1).Range.Delete
.Cell(Row:=3, Column:=2).Range.Delete
.Cell(Row:=3, Column:=3).Range.Delete
.Cell(Row:=3, Column:=4).Range.Delete
.Cell(Row:=3, Column:=5).Range.Delete

'Preenche a tabela com os dados do formulário
.Cell(1, 1).Range.InsertAfter ComboBox1
.Cell(3, 1).Range.InsertAfter TextBox1.Text
.Cell(3, 2).Range.InsertAfter TextBox2.Text
.Cell(3, 3).Range.InsertAfter TextBox3.Text
.Cell(3, 4).Range.InsertAfter TextBox4.Text
.Cell(3, 5).Range.InsertAfter TextBox5.Text
End With

'Fecha o Formulário (frmResultadoFinal)
Unload Me

'Em caso de erro a rotina abaixo é executada
CommandButton1_Click_Fim:
Exit Sub 'Sai do prodecimento
CommandButton1_Click_Err:
MsgBox "Erro n. " & Err.Number & " - " & Err.Description
Resume CommandButton1_Click_Fim



Deverá ficar como na imagem abaixo:


Código do Formulário
Código VBA


Uma observação importante: Os trechos de texto em verde são apenas comentários que inseri entre os códigos para que todos possam entender melhor como funciona cada rotina (linha de código).


Se a Caixa de Combinação estiver vazia será exibida uma mensagem solicitando ao usuário para selecionar uma série/ano.


Se a Caixa de Texto (TextBox1) estiver vazia, será exibida uma mensagem ao usuário solicitando que seja informado o nº de alunos matriculados.


Se as Caixas de Textos (TextBox2, TextBox3 e TextBox4) estiverem vazias serão preenchidas com 0 (zero) para não gerar erros no cálculo exibido na Caixa de Texto (TextBox5).


Agora selecione o Botão de Comando (CommandButton2), clique com o botão direito do mouse sobre o mesmo e em seguida clique em Exibir Código.


Exibir Código VBA


No evento clique deste botão adicione o seguinte código:


'Limpa a Caixa de Combinação e as Caixas de Textos
ComboBox1.Text = ""
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""



Deverá ficar como na imagem abaixo:


Código VBA


Selecione o Botão de Comando (CommandButton3), clique com o botão direito do mouse sobre o mesmo e em seguida clique em Exibir Código.


Exibir Código VBA


No evento clique deste botão adicione o seguinte código:


Unload Me


Deverá ficar como na imagem abaixo:


Código VBA


Com isso concluímos nossa aplicação.


Agora vamos criar uma macro para exibir o formulário sempre que for necessário.


Em um novo módulo adicione o código abaixo:


Sub resultadofinal()
frmResultadoFinal.Show
End Sub



Código VBA


Feche o Editor do Visual Basic para voltar ao Word.


Agora vamos testar nossa aplicação.


Na Guia Desenvolvedor, no Grupo Código clique em Macros.


Macros


Selecione a macro resultadofinal e clique em Executar.


Executar Macro


Preencha o formulário e clique em Adicionar.


Preencher Formulário


Os dados do formulário serão inseridos na tabela. Veja o resultado na imagem abaixo:


tabela preenchida com os dados do formulário







Gostou? Se quiser mais eu tenho um e-Book sobre VBA que você pode se interessar.
Confira aqui






Conteúdo Correspondente:




eBook Word 2010 VBA

© 2013 Tutoriais Word - Todos os direitos reservados