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






Conteúdo Correspondente:




eBook Word 2010 VBA

© 2013 Tutoriais Word - Todos os direitos reservados