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:
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).
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:
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:
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:
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:
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:
Adicionando o Código para preencher a tabela
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.
Na caixa objeto selecione UserForm.
Em procedimento selecione 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:
Selecione a Caixa de Texto (TextBox1), clique com o botão direito do mouse sobre ela e em seguida clique em Exibir código.
Na Janela de Código selecione o procedimento 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:
Selecione as demais Caixas de Textos e execute a mesma operação em cada uma delas. Deverá ficar como na imagem abaixo:
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.
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:
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.
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:
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.
No evento clique deste botão adicione o seguinte código:
Unload Me
Deverá ficar como na imagem abaixo:
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
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.
Selecione a macro resultadofinal e clique em Executar.
Preencha o formulário e clique em Adicionar.
Os dados do formulário serão inseridos na tabela. Veja o resultado na imagem abaixo:
Gostou? Se quiser mais eu tenho um e-Book sobre VBA que você pode se interessar.
Confira aqui