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

Como permitir a seleção de apenas uma Caixa de Seleção.

A Caixa de Seleção ativa ou desativa um valor que indica uma opção.

Por padrão a Caixa de Seleção usada em um formulário permite a seleção de vários itens ao mesmo tempo, como pode ser visto na imagem abaixo:

Caixa de Seleção

Como pode ser vista na imagem acima é possível marcar mais de uma caixa de seleção por vez em um documento. Porém, às vezes queremos que o usuário selecione apenas uma das várias opções fornecidas em um formulário.

Neste tutorial mostrarei como impedir que o usuário selecione mais de uma opção ao mesmo tempo. Para isso criaremos uma macro que impedirá a múltipla seleção em um grupo de Caixas de Seleção.

Siga os passos a seguir:

1- Abra o documento que contém o formulário com as Caixas de Seleção ou crie um novo documento.

Neste exemplo usaremos um formulário como o da imagem abaixo:

Formulário

2- O processo exige que cada Caixa de Seleção no grupo seja nomeado com um prefixo, um ID de Grupo de quatro dígitos e um caráter sequência única. Veja um exemplo:

A primeira Caixa de Seleção altere o nome do Indicador para CHK_1234_A

Caixa de Seleção

A imagem acima mostra essa convenção de nomenclatura aplicada à Caixa de Seleção "Azul". Semelhantemente os Indicadores das caixas de seleção restantes deverão ser alterados para CHK_1234_B, CHK_1234_C e CHK_1234_D

Observe que cada Indicador tem um prefixo comum CHK, um identificador de grupo comum 1234 e um sufixo exclusivo sequencial A, B, C e D.

2- Acesse o Editor do VBA através da Guia Desenvolvedor e no Grupo Código clique em Visual Basic ou simplesmente use o atalho ALT + F11.

Visual Basic

3- No ambiente de desenvolvimento clique no menu Inserir e depois clique em Módulo.

Inserir Módulo

4- Na janela de Código criaremos uma macro e daremos o nome de selecaounica, portanto, adicione o seguinte código.

Sub selecaounica()
Dim strTemp As String
Dim oFF As FormField
Dim strGrpID As String
Dim strSeqID As String
Dim i As Long
Dim strSeqNext As String

'Permite até 26 Caixas de Seleção por Grupo
strTemp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Set oFF = Selection.FormFields(1)
If oFF.CheckBox.Value = True Then
strGrpID = Left(oFF.Name, 8)
strSeqID = UCase(Right(oFF.Name, 1))
If strSeqID Like "[A-Z]" Then

'Limpa todoas as Caixas de Seleção, inclusive aquela que foi selecionada (assegura que somente uma Caixa de Seleção seja selecionada).
For i = 1 To Len(strTemp)
strSeqNext = strGrpID & "_" & Mid(strTemp, i, 1)
If ActiveDocument.Bookmarks.Exists(strSeqNext) Then
ActiveDocument.FormFields(strSeqNext).CheckBox.Value = False
End If
Next i

'Define a Caixa de Seleção que foi selecionada
oFF.CheckBox.Value = True
End If
End If
lbl_Exit:
Exit Sub
End Sub


Deverá ficar como na imagem abaixo:

Caixa de Seleção

5- Feche o Editor do Visual Basic para voltar ao Word, clicando no menu Arquivo e em Fechar e voltar para o Microsoft Word.

Fechar e Voltar para o Microsoft Word

6- Na primeira Caixa de Seleção clique com o botão direito do mouse e selecione Propriedades para exibir a caixa de diálogo Opções do campo de formulário caixa de seleção.

Opções do campo de formulário

7- Em Executar macro em selecione a macro selecaounica nos campos Entrada e Saída.

Opções do campo de formulário

Execute o mesmo procedimento nas demais Caixas de Seleção.

8- Para ver o nosso exemplo em funcionamento proteja o formulário e selecione uma opção e em seguida tente selecionar outra opção, você perceberá que sempre que uma nova opção for selecionada a outra será desmarcada.

Caixa de Seleção

Consideração Final:

Se houver outros grupos de Caixa de Seleção em seu formulário que você queira impedir a seleção múltipla, basta alterar a identificação de grupo comum no campo Indicador. Observe que para o primeiro grupo de Caixa de Seleção a identificação do grupo é 1234 (CHK_1234_A), para um segundo grupo podemos usar 4567 (CHK_4567_A).

Por exemplo, digamos que no formulário tem um outro grupo com três Caixas de Seleção, então, ficaria Assim:

CHK_4567_A

CHK_4567_B

CHK_4567_C

Caixa de Seleção

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




Formação Pacote Office



eBook Word 2010 VBA

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