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

Formulário com Macro no Word 2003




Às vezes para executar uma operação é preciso recorrer a uma pequena rotina de programação em linguagem Visual Basic for Applications (VBA). Isso é necessário porque não há uma outra forma, senão via programação, de capturar os valores definidos nos Campos de formulário suspensos (caixa de combinação), somá-los e lançar o resultado no Campo de formulário Texto (Caixa de texto).


Criando um Formulário com Macro


Neste exemplo temos um formulário e neste formulário temos três Campos de formulário suspenso (caixas de combinação) chamadas Dropdown1, Dropdown2 e Dropdown3 e um Campo de formulário texto (caixa de texto) chamada Texto1, mantendo os nomes-padrão atribuídos pelo programa.


Formulário


Cada Campo de formulário suspenso possui vários valores que serão selecionados pelo usuário e o total deverá ser somado automaticamente no Campo de formulário texto.


Observe a sequência de imagens abaixo:


Selecionando o primeiro valor.


Campo de Formulário Texto


Selecionando o segundo valor.


Campo de Formulário Texto


Selecionando o terceiro valor.


Campo de Formulário Texto

Para que a somatória seja feita automaticamente no Campo de formulário texto (caixa de texto), vamos usar um pouco de programação VBA. Para isso clique no Menu Ferramentas >> Macro >> Editor do Visual Basic ou se referir acione a combinação de teclas Alt+F11.


Editor do Visual Basic


No Editor do Visual Basic, você vê à esquerda a caixa Projeto. Clique em Project (Nome do Documento). Nome do Documento, aqui, é o nome do arquivo de seu formulário, sem extensão. Dentro dessa pasta Project há outra, chamada Microsoft Word Objetos e, dentro desta última, ThisDocument. Dê um duplo clique em ThisDocument para abrir uma janela de código em branco.


Janela de Código


Na janela de código em branco cole o seguinte código.


Sub SomaCampos()

   Dim a As Double, b As Double, c As Double 

   ActiveDocument.FormFields("Texto1").Result = "" 

   a = CDbl(ActiveDocument.FormFields("Dropdown1").Result) 

   b = CDbl(ActiveDocument.FormFields("Dropdown2").Result)

   c = CDbl(ActiveDocument.FormFields("Dropdown3").Result)

   ActiveDocument.FormFields("Texto1").Result = a + b + c

End Sub


Deverá ficar assim:


Janela de Código


Essa rotina (macro) chamada SomaCampos pega o valor atual dos três Campos de formulário suspenso (caixas de combinação), soma-os e escreve o resultado no Campo de formulário texto (caixa de texto).


Feche o Editor do Visual Basic.


Agora devemos ajustar o formulário, portanto, vamos voltar a cada Campo de formulário suspenso, selecione o campo e com o botão direito do mouse selecione Propriedades.


Propriedades


Em Executar macro, na caixa Saída, selecione o nome da macro SomaCampos, que é uma das opções. Repita esse procedimento em todas os Campos de formulário suspenso. Para finalizar clique em OK


Opções do campo de formulário suspenso


Não se esqueça de proteger o formulário, pois isso é indispensável para que tudo funcione adequadamente. Para proteger o formulário você deve clicar na ferramenta Proteger formulário. Observe a imagem abaixo.


Formulários


Selecione os valores dos Campos de formulário suspenso (caixas de combinação) e veja que o resultado no Campo de formulário texto (caixa de texto) atualiza automaticamente.


Campo de formulário texto


Considerações finais:


Use a tecla Tab para navegar pelos campos de formulários.


Tab para avançar


SHIFT + TAB para retornar


Para evitar erros na operação, incluí nas opções dos Campos de formulario suspenso (caixas de combinação) o valor 0 como o primeiro da lista. Também é possível deixar essa opção em branco ou trocá-la por algo como "Selecione um valor". Nesse caso, para evitar erro, seria necessário alterar o código: antes de executar a soma, verificar se o valor da caixa de combinação é um texto e, nesse caso, trabalhar com ele como equivalente ao valor numérico zero.









Conteúdo Correspondente:




eBook Word 2010 VBA

© 2013 Tutoriais Word - Todos os direitos reservados