Como criar automaticamente caixas vinculadas às células abaixo no Excel

Novembro 2017

Nesta dica, você verá como criar, no Excel, caixas de seleção automaticamente vinculadas a células específicas. Na verdade, sem a VBA (linguagem de programação no Excel) não é possível criar várias caixas a serem assinaladas ao mesmo tempo. Você pode fazer vários Copiar / Colar, mas se quiser vincular sua caixa a uma célula, deverá fazê-lo manualmente. Para cada uma de suas cópias, você deverá selecionar a célula a ser vinculada. Esta pode ser uma tarefa enfadonha, dependendo do número de caixas de seleção.


Tipos de caixa de seleção no Excel

Existem dois tipos de caixas de seleção no Excel, as caixas do tipo formulário e os controles ActiveX. Nesta dica, vamos utilizar as caixas de seleção do tipo formulário.

Não coloque muitos itens em uma planilha do Excel

Mesmo sendo uma das possibilidades do Excel, cuidado com planilhas muito cheias. O Excel nem sempre lida bem com isso e, em geral, acabamos com uma exibição mal feita ou, no mínimo, diferente do esperado, principalmente se a sua pasta de trabalho for realizada com várias versões do Excel. Assim sendo, seria melhor procurar outra solução para evitar as instabilidades.

O que é uma caixa de seleção

Não vamos reescrever aqui o que o site da Microsoft já fez detalhadamente aqui, mas explicar a possibilidade de vincular uma caixa de seleção a uma célula. Para as propriedades de nossas caixas de seleção (Checkboxes), existem duas células importantes:

Célula de posição: célula acima da qual vamos desenhar a nossa caixa de seleção;
Célula vinculada: célula na qual vamos enviar o resultado, o valor da nossa caixa de seleção.


Observação: nesta dica, a célula vinculada será a célula de posição.

O fato de marcar (ou desmarcar) faz com que nossa caixa de seleção envie as menções Verdadeiro ou Falso para a célula vinculada. Infelizmente, o Excel não prevê o caso de querermos criar várias caixas de seleção com diversas células vinculadas (uma para cada caixa de seleção). Veja duas soluções diferentes passando pelo código VBA (Visual Basic for Applications).

Solução 1 - com inicialização manual

Quando acionado, este código VBA simples vai gerar a adição de caixas de seleção vinculadas às células situadas abaixo, células essas que você selecionou anteriormente.

O código

Para instalá-lo a partir de sua pasta de trabalho, pressione as teclas Alt + F11 > Inserir/Módulo. Na janela de código deste módulo, copie e cole o seguinte código:

Option Explicit

Sub Inserer_Caixas_de_Seleção_Vinculadas()
Dim rngCel As Range
Dim ChkBx As CheckBox

For Each rngCel In Selection
  With rngCel.MergeArea.Cells
    If .Resize(1, 1).Address = rngCel.Address Then
    'Para não exibir o valor da célula vinculada, remova o apóstrofe no início da linha seguinte:
      '.NumberFormat = ";;;"
      Set ChkBx = ActiveSheet.CheckBoxes.Add(.Left, .Top, .Width, .Height)
      With ChkBx
        'valor padrão:
        .Value = xlOff 'pode ser Verdadeiro ou Falso
        'célula vinculada
        .LinkedCell = rngCel.MergeArea.Cells.Address
        'Texto de substituição
        '.Characters.Text = "TITI"
        'texto
        '.Text = "Toto" ' ou : .Caption = "Toto"
        'bordure :
        With .Border
          'Estilo de linha
          '.LineStyle = xlLineStyleNone 'ou xlContinuous 'ou xlDashDot ou xlDashDotDot ou xlDot
          'cor
          '.ColorIndex = 3  '3 = vermelho
          'espessura da linha
          '.Weight = 4
        End With
        'propriedades também acessíveis .Locked, .Name, .Enabled etc...
      End With
    End If
  End With
Next rngCel
End Sub

Observação: as linhas verdes são os comentários. Você verá neles algumas das propriedades das caixas de seleção que você poderá adicionar. Para fazê-lo, basta remover o apóstrofe no início da linha do código em questão.

Como usar este código

A partir de uma das planilhas da sua pasta de trabalho, selecione o intervalo de células onde você quer inserir as caixas de seleção e pressione as teclas Alt + F8. Em seguida, selecione Inserir_Caixas_de_Seleção_Vinculadas e clique em Executar. Pronto, suas caixas de seleção foram inseridas nos lugares desejados e vinculadas às células nas quais foram colocadas.

Solução 2 - com inicialização automática

Nesta solução vamos trabalhar com um dos nossos eventos provocadores da nossa planilha Excel, ou seja, o evento Worksheet_SelectionChange. Esse evento executará, automaticamente, o código toda vez que você selecionar uma célula diferente, na planilha em questão.

Toda vez que você mudar a seleção, o código proposto vai percorrer todas as células de um determinado intervalo (ou da planilha inteira, se você quiser) e, se esta célula estiver com a fonte Wingdings, ele irá inserir um falsa caixa de seleção. Nós usamos aqui os caracteres þ e o que, nesta fonte, nos retorna os símbolos correspondentes a uma caixa de seleção marcada ou desmarcada.

O código

Para inserir esse código, basta abrir a planilha em questão, clicar direito na aba desta planilha em Visualizar o código e Copiar / Colar este código:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Restrição do intervalo. Para uma planilha inteira colocar um apóstrofe no início da linha seguinte
    If Intersect(Union([A2:A10], [D2:D10]), Target) Is Nothing Then Exit Sub 'intervalo A2:A10;D2:D10
    If Target.Count = 1 Or Target.MergeCells Then
        If Target.Font.Name = "Wingdings" Then
            With Target    'célula "vinculada"
                .Value = Abs(.Range("A1").Value - 1)
                .NumberFormat = """þ"";General;""o"";@"
                Application.EnableEvents = False
                .Range("A1").Offset(, 1).Select
                Application.EnableEvents = True
            End With
        End If
    End If
End Sub

Como utilizar esse código

Selecione as células em questão e aplique a fonte Wingdings nelas. Em seguida, clique em qualquer lugar da planilha e em cada uma das células escolhidas anteriormente.

Observação: para obter o número de caixas marcadas em outra célula, você deverá usar a fórmula
=NB.SE (C3: C14, 1)
. A função
=SOMA
não terá nenhuma utilidade neste caso.

Como usar o código em uma planilha protegida

Se a planilha estiver protegida, você deverá desprotegê-la com o código. Na verdade, em caso de proteção da planilha, uma mensagem de alerta aparece, a marca de seleção é alternada, mas o valor vinculado não. Para desproteger e proteger novamente uma planilha, o código VBA é:

ActiveSheet.Protect "admin" 'admin = sua senha

AQUI O SEU CÓDIGO

ActiveSheet.Unprotect "admin"

Foto: © Microsoft.
Artigo original publicado por deri58. Tradução feita por pintuda. Última modificação: 9 de novembro de 2017 às 13:20 por Pedro.CCM.
Este documento, intitulado 'Como criar automaticamente caixas vinculadas às células abaixo no Excel', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.