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

Como fazer filtro em caixa de combinação

Para aqueles que gostam de utilizar formulários no Word darei aqui um exemplo de como filtrar dados de uma Caixa de Combinação de modo que ao selecionar um item desta Caixa de Seleção seja automaticamente carregado em uma outra Caixa de Combinação ou Caixa de Listagem somente os itens correspondentes ao item selecionado na primeira Caixa de Seleção.

Para o exemplo deste tutorial utilizaremos duas Caixa de Combinação, a primeira conterá uma lista com algumas marcas de automóveis e a segunda será automaticamente preenchida com a listagem dos modelos de carros referente a marca selecionada na primeira Caixa de Combinação.

Filtro em Formulário no Word 365

Inserindo os controles de formulários

Para inserir os controles de formulário acione a guia Desenvolvedor e no grupo Controles clique em Ferramentas Herdadas como mostra a imagem abaixo:

Ferramentas Herdadas

Nos Formulários Herdados clique em Caixa de Combinação para inserir o primeiro e o segundo controle de formulário, ou seja, vamos inserir duas caixas de combinação.

Formulário Herdados

Deverá ficar como na imagem abaixo:

Caixas de Combinação

Clique com o botão direito do mouse sobre a primeira caixa de combinação e em seguida clique em Propriedades.

Propriedades do Formulário

Na Caixa de Diálogo Opções do campo de formulário suspenso vamos adicionar as marcas de automóveis que iremos utilizar neste exemplo.

Em Item suspenso digite na caixa de texto a marca do automóvel e clique em Adicionar. Repita esse procedimento até que todas as marcas de automóveis estejam dentro da caixa de listagem de Itens na lista suspensa. Mantenha selecionado a opção Suspenso habilitado.

No exemplo deste tutorial utilizaremos as seguintes marcas: CHEVROLET, FIAT, FORD, TOYOTA e VOLKSWAGEN.

Opções de Campo de Formulário Suspenso

Criando a macro para filtrar os dados na Caixa de Combinação

Para criar uma macro no Word usando recursos VBA você deve abrir o Editor do Visual Basic através do atalho ALT + F11 ou clicando na Guia Desenvolvedor e no grupo Código clicar em Visual Basic.

Visual Basic

No Editor do Visual Basic insira um novo módulo clicando no menu Inserir e depois em Módulo.

Inserir Módulo VBA

Dentro do módulo adicione o seguinte código:

Sub filtragem()
'Declara as variáveis
Dim sValor As String
Dim sLista As ListEntries

sValor = ActiveDocument.FormFields("Dropdown1").Result
Set sLista = ActiveDocument.FormFields("DropDown2").DropDown.ListEntries

On Error GoTo filtragem_Click_Err

'Condição para o preenchimento da segunda Caixa de Combinação
If sValor = "" Then
ActiveDocument.FormFields("Dropdown2").Result= ""
ElseIf sValor = "CHEVROLET" Then
With sLista
.Clear
.Add Name:="Chevrolet Camaro"
.Add Name:="Chevrolet Cruze"
.Add Name:="Chevrolet Montana"
.Add Name:="Chevrolet Onix"
.Add Name:="Chevrolet S10"
End With
ElseIf sValor = "FIAT" Then
With sLista
.Clear
.Add Name:="Fiat Argo"
.Add Name:="Fiat Cronos"
.Add Name:="Fiat Mobi"
.Add Name:="Fiat Toro"
.Add Name:="Fiat Uno"
End With
ElseIf sValor = "FORD" Then
With sLista
.Clear
.Add Name:="Ford Courier"
.Add Name:="Ford Ecosport"
.Add Name:="Ford Fiesta"
.Add Name:="Ford Fusion"
.Add Name:="Ford KA"
End With
ElseIf sValor = "TOYOTA" Then
With sLista
.Clear
.Add Name:="Toyota Camry"
.Add Name:="Toyota Corola"
.Add Name:="Toyota Etios"
.Add Name:="Toyota Hilux"
.Add Name:="Toyota SW4"
End With
ElseIf sValor = "VOLKSWAGEN" Then
With sLista
.Clear
.Add Name:="Volkswagen Amarok"
.Add Name:="Volkswagen Gol"
.Add Name:="Volkswagen Polo"
.Add Name:="Volkswage Saveiro"
.Add Name:="Volkswagen Voyage"
End With
End If
Set oListEntries = Nothing

'Em caso de erro
filtragem_Click_Fim:
Exit Sub
filtragem_Click_Err:
MsgBox "Erro n. " & Err.Number & " - " & Err.Description
Resume filtragem_Click_Fim
End Sub


Explicando a macro

Primeiramente declaramos duas variáveis, a variável sValor como String (tipo de dado recomendado para armazenar texto no VBA) e a variável sLista como ListEntries (representa todos os itens de um formulário suspenso, por exemplo: Caixa de Combinação, Caixa de Listagem).

A variável sValor recebe o dado do item selecionado no primeiro campo de formulário, ou seja, da primeira Caixa de Combinação.

Utilizamos a instrução Set para atribuir uma referência de um objeto a uma variável que neste caso faz referência ao segundo campo de formulário, portanto, a variável sLista vai armazenar os itens da segunda Caixa de Combinação.

Usamos a condicional IF para condicionar o preenchimento dos itens segunda Caixa de Combinação, ou seja, a relação de itens será de acordo com o item selecionado na primeira Caixa de Combinação


A macro será executada quando o foco sair da primeira caixa de combinação, portanto, agora devemos associar essa macro ao evento de saída da primeira Caixa de Combinação.

Feche o Editor do Visual Basic clicando no menu Arquivos e depois em Fechar e voltar para Microsoft Word.

Fechar o Editor do Visual Basic

Estando de volta ao Word clique com o botão direito do mouse sobre a primeira Caixa de Combinação e depois clique em Propriedades.

Propriedades

Nas Opções de campo de formulário suspenso vá até Executar macro em e em Saída selecione a macro filtragem e clique no botão OK como mostra a imagem abaixo.

Selecionar macro

Proteger o Formulário

Agora é necessário proteger o formulário.

Na Guia Desenvolvedor e no Grupo Proteger clique em Restringir Edição ou através da guia Revisão e no grupo Proteger clique em Restringir Edição.

Restringir edição

Note que ao lado direito surgiu uma janela para configurações de proteção.

Painel restringir edição

Em Restrições de edição tique em Permitir apenas este tipo de edição no documento: e na caixa de listagem selecione Preenchendo formulários.

Proteção de Formulário

E para finalizar clique no botão Sim, Aplicar Proteção, defina uma senha e depois dê um OK.

Aplicar proteção no formulário

Faça o download do exemplo utilizado neste tutorial: Download




Word VBA


Política de Privacidade  |   © 2013 Tutoriais Word - Todos os direitos reservados