Quando montamos uma planilha no Excel o mais importante é a consistência dos dados, garantir que as fórmulas estão corretas, e de que tudo é executado conforme o planejado. Mas convenhamos que uma planilha bem apresentada, traz um diferencial, deixa tudo mais profissional e até parece mais confiável.
Aqui vou te mostrar a como exibir caixa de listagem ao selecionar célula, e somente quando o usuário desejar ver essa caixa de listagem. Tudo aqui funciona via macro, caso você esteja procurando como fazer uma caixa de seleção nos moldes tradicionais, pode conferir aqui.
Caixa de seleção padrão
O Excel já vem com uma caixa de seleção de dados embutida, que ele chama de Validação de Dados, e que é bastante útil e prática, pra falar a verdade, mas é um pouco feia em minha opinião, e não ideal para planilhas com uma cara mais profissional.
Como dito antes, nós já temos alguns posts que cobrem esse assunto, aqui estão alguns deles:
- Como fazer uma lista suspensa
- Remover valores usados de listas de seleção
- Criando caixa de seleção com validação de dados
Com preguiça de ler? Assista ao vídeo
Coloque o vídeo em tela cheia para assistir normalmente
Caixa de seleção sem usar validação de dados
O primeiro passo para que tudo funcione é saber como criar uma lista de dados sem usar a tradicional validação de dados.
Para isso, vamos criar um novo objeto, chamado de Controle de Formulário, e usar a opção Caixa de Listagem. Mas para conseguir fazer isso, você tem que primeiro ter a aba de Desenvolvedor habilitado em seu Excel.
Como ativar a aba de desenvolvedor
O Controle de Formulário Caixa de Listagem está presente dentro da aba Desenvolvedor do menu principal do Excel, mas essa não vem habilitada por padrão. Aqui está como habilitá-la.
- Clique em Arquivo no topo esquerdo do menu principal.
- Clique em Opções no canto inferior esquerdo.
- Na janela que abre, selecione Personalizar Faixa de Opções à esquerda.
- No quadro à direta marque a opção Desenvolvedor.
- Clique em OK.
IMAGEM1
Inserindo a caixa de listagem
A imagem abaixo deve te guiar.
Depois é só desenhar ela na tela segurando o botão do mouse e arrastando pra ficar do tamanho desejado.
Como funciona a Caixa de Listagem
Antes de irmos pro código da macro, acho que é importante entender como a Caixa de Listagem funciona sem macro nenhuma.
Existem basicamente duas coisas que são necessárias para que a Caixa de Listagem funcione corretamente, embora exista uma série de itens que podem ser configurados, são eles:
- Intervalo de entrada
- Vínculo de célula
Ambos podem ser encontrados clicando com o botão direito do mouse sobre a Caixa de Listagem e selecionando Formatar Controle.
E os itens mencionados estarão na aba Controle.
Intervalo de entrada
É uma referência as células, onde a lista a ser exibida está dentro da planilha. Por exemplo: A1:A10.
Vínculo de célula
É uma célula única que terá seu valor alterado conforme os itens na lista forem selecionados, por exemplo, caso seja selecionado o primeiro o valor desta célula mudará para 1, caso seja selecionado o terceiro item, o valor da célula será 3.
Independente do que estiver escrito no item selecionado, o que será exibido na célula de vínculo será sempre a posição do item selecionado na lista.
Exemplo prático
Montei uma planilha super simples, onde tenho a lista de nomes dos clientes no intervalo B3:B7 e fiz da célula D4 a célula de vínculo para minha lista.
Minha ideia é que quando eu selecionar a célula D3, e somente quando selecionar esta célula, a caixa de listagem fique visível. E assim que eu selecionar outra célula qualquer, a lista deve desaparecer.
Além disso, quando eu selecionar algum item na lista, quero que o item selecionado apareça automaticamente na célula D3 e que fique lá quando eu deixar de selecionar esta célula.
Vamos fazer isso por passos, pra ficar bem claro.
Passo 1 – Dando um nome a nossa lista
Para ficar fácil de identificar a Caixa de Listagem nos códigos de macro, vamos alterar o nome dela para algo mais simples, vou chamar de ListaClientes.
- Selecione a Caixa de Listagem (Talvez seja necessário segurar CTRL para que consiga selecionar a lista).
- Logo acima da célula A1, você verá a Caixa de Nome, altere o que estiver lá para o nome desejado, no meu caso ListaClientes, e pressione ENTER.
Passo 2 – Criando a macro
Abra o editor VBA (ALT + F11) e à esquerda, selecione com duplo clique, a aba do Excel na qual a célula que fará aparecer ou ocultar a lista está. No meu caso o nome da aba é Clientes.
Agora basta utilizar o código de macro abaixo e colar na área à direita da tela.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Address = "$D$3" Then ActiveSheet.Shapes.Range(Array("ListaClientes")).Visible = True Range("D3").Formula2R1C1 = "=INDEX(R3C2:R15C2,R4C4)" Range("D4").Value = 1 Else ActiveSheet.Shapes.Range(Array("ListaClientes")).Visible = False Range("D3").Value = Range("D3").Value Range("D4").ClearContents End If End Sub
Este código basicamente testa se a célula selecionada é a D3 ou não, caso seja, a Caixa de Listagem fica visível, caso contrário ela é ocultada. A explicação mais detalhada do código acima você pode conferir no vídeo no início do artigo.
Mas o que é mais importante notar aqui é que alguns trechos do código você deve alterar conforme necessidade:
- Altere a célula alvo
Sempre que aparecer D3 ou $D$3 no código, altere para sua célula alvo. - Altere a célula de vínculo
Sempre que aparecer D4 no código, altere para sua célula de vínculo. - Altere a fórmula ÍNDICE
No código tem a fórmula “=INDEX(R3C2:R15C2,R4C4)” que é usada para encontrar o nome que está na posição do item selecionado na lista.
R3C2 = Linha 3 Coluna 2, ou seja, célula B3.
R15C2 = Linha 15 Coluna 2, ou seja, célula B15.
As duas acima formam a área onde os nomes dos clientes estão.
R4C4 = Linha 4 Coluna 4, ou seja, célula D4. Que é a célula vínculo da caixa de listagem. - Altere o nome da caixa de listagem
No meu caso o nome é ListaClientes, então sempre onde isso aparecer no código, altere para o nome da sua caixa de listagem.
Passo 3 – Salvando o arquivo corretamente
Para que tudo funcione seu arquivo dese ser salvo com um formato diferente do padrão do Excel, calma, o arquivo continua sendo Excel, só que será habilitado para macros, você não notará diferença alguma nele, tirando que as macro funcionarão.
Salve o arquivo como e selecione a opção Pasta de Trabalho Habilitada para Macro do Excel.
E é isso, seu arquivo será salvo no formal .xlsm ao invés do .xlsx.
Passo 4 – Ser feliz
É isso, agora já está tudo funcionando, eu recomendo que assista vídeo no início do artigo caso tenha ficado qualquer dúvida, já que lá fica mais fácil de entender todos os passos que faço.