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 Filtro em Formulário no Word 365](filtro-em-caixa-de-combinacao/filtro-em-formulario.jpg)
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 Ferramentas Herdadas](filtro-em-caixa-de-combinacao/Ferramentas-herdadas.jpg)
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 Formulário Herdados](filtro-em-caixa-de-combinacao/Formulario-Herdados.jpg)
Deverá ficar como na imagem abaixo:
![Caixas de Combinação Caixas de Combinação](filtro-em-caixa-de-combinacao/duas-caixas-de-combinacao.jpg)
Clique com o botão direito do mouse sobre a primeira caixa de combinação e em seguida clique em Propriedades.
![Propriedados do Formulário Propriedades do Formulário](filtro-em-caixa-de-combinacao/propriedades-do-formulario.jpg)
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 Opções de Campo de Formulário Suspenso](filtro-em-caixa-de-combinacao/opcoes-de-campo-de-formulario-suspenso.jpg)
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 Visual Basic](filtro-em-caixa-de-combinacao/Visual-Basic.jpg)
No Editor do Visual Basic insira um novo módulo clicando no menu Inserir e depois em Módulo.
![Inserir Módulo Inserir Módulo VBA](filtro-em-caixa-de-combinacao/inserir-modulo.jpg)
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 Fechar o Editor do Visual Basic](filtro-em-caixa-de-combinacao/fechar-e-voltar-para-o-word.jpg)
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 Propriedades](filtro-em-caixa-de-combinacao/formulario-propriedades.jpg)
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 Selecionar macro](filtro-em-caixa-de-combinacao/selecionar-macro-filtragem.jpg)
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 Restringir edição](filtro-em-caixa-de-combinacao/restringir-edicao.jpg)
Note que ao lado direito surgiu uma janela para configurações de proteção.
![Painel restringir edição Painel restringir edição](filtro-em-caixa-de-combinacao/painel-restringir-edicacao.jpg)
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 Proteção de Formulário](filtro-em-caixa-de-combinacao/permitir-apenas-este-tipo-de-edicao.jpg)
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 Aplicar proteção no formulário](filtro-em-caixa-de-combinacao/aplicar-protecao.jpg)
Faça o download do exemplo utilizado neste tutorial: Download