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

Nessa dica, veja como criar caixas de seleção automaticamente vinculadas a células específicas. É possível realizar o procedimento manualmente, mas a tarefa pode se tornar muito demorada e com maior risco de erro. Assim, o ideal é utilizar a linguagem de programação do Excel para fazer todas as vinculações ao mesmo tempo.

Observação: 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.

O que é uma caixa de seleção

Não vamos reescrever o que o site da Microsoft já fez detalhadamente aqui. O objetivo desse artigo é 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 inserir o resultado, o valor da nossa caixa de seleçã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). Porém, há duas soluções para esse problema com o uso de código VBA.

Solução 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 e selecionadas anteriormente. Para gerar o código a partir de sua pasta de trabalho, pressione as teclas Alt + F11 para abrir a janela VBA.

Agora, clique em Inserir (na barra de ferramentas) e depois em Módulo. Na janela de código que aparece, 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 fazer isso, 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 com inicialização automática

Nessa solução, vamos trabalhar com 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). Caso essa célula esteja com a fonte Wingdings, o Excel inserirá um falsa caixa de seleção. Usamos aqui os caracteres þ e o que, nessa fonte, nos retorna os símbolos correspondentes a uma caixa de seleção marcada ou desmarcada.

Para inserir esse código, repita o procedimento acima (Alt + F11; Inserir > Módulo) e cole o código a seguir:

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á utilidade nesse 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 e a marca de seleção é alternada, mas o valor vinculado não. Para desproteger uma planilha, o código VBA é:

ActiveSheet.Protect "admin" 'admin = sua senha

INSIRA AQUI O SEU CÓDIGO

ActiveSheet.Unprotect "admin"

Foto: © Sasirin Pamai - 123RF.com

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Veja também
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.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade