
Perguntei isso no StackOverflow e fui redirecionado aqui. Desculpas pela redundância.
Eu tenho uma planilha do Excel com uma caixa de combinação na Planilha1 que é preenchida por meio de sua propriedade Intervalo de Entrada de um Intervalo Nomeado Dinâmico na Planilha2. Funciona bem e nenhum VBA é necessário.
Meus dados na Planilha2 estão, na verdade, em uma tabela do Excel (todos os dados estão no arquivo XLS, sem fontes de dados externas). Para maior clareza, eu queria usar uma referência de tabela estruturada para o intervalo de entrada da caixa de combinação, mas não consigo encontrar uma sintaxe que funcione, por exemplo, myTable[[#Data],[myColumn3]]
Não consigo encontrar nenhuma indicação de que a caixa de combinação aceitará referências de tabelas estruturadas, embora não veja por que isso não aconteceria.
Portanto, pergunta em duas partes: 1. É possível usar uma referência de coluna da tabela na propriedade do intervalo de entrada da caixa de combinação (sem usar VBA) e 2. COMO?
Responder1
Sei que essa é uma pergunta bastante antiga, mas, para o caso de alguém se deparar com ela, como eu fiz, procurando resolver a mesma questão ... Assim como ScottieB, eu também não consegui fazer a resposta de Dav funcionar para mim. Veja como resolvi isso no Excel 2013.
Crie sua lista vertical de opções para sua caixa de combinação. Não está em uma tabela (ainda), não tem um título (ainda, mas deixe espaço para um), apenas uma coluna do que você precisa para seu menu suspenso.
Crie/defina um nome para sua lista usando a notação regular Sheet1!$A$1:$A$2.
Insira seu controle de formulário Combo Box usando o nome que você acabou de criar para seu intervalo de entrada.
Até agora tudo bem. A Caixa de Combinação funcionará, mas novas opções adicionadas ao final da lista vertical (mesmo imediatamente abaixo do intervalo nomeado) não serão adicionadas à lista suspensa; o intervalo nomeado, no qual o menu suspenso se baseia, não é expandido dinamicamente.
Agora, a parte boa.
- Volte para sua lista vertical (certifique-se de limpar tudo o que adicionou ao intervalo nomeado para que fique exatamente como você deixou na etapa 2) e adicione um título acima dela. Qualquer texto serve, é apenas um rótulo para identificar sua lista de opções.
(Ou não! O Excel adicionará um para você na próxima etapa de qualquer maneira, se você permitir.)
- Com o título selecionado, use Ctrl+T ou Insert | Mesa. Aceite o intervalo encontrado pelo Excel e marque a caixa 'Minhas tabelas têm cabeçalhos' e clique em OK. Você pode alterar o nome da tabela se quiser: não importa.
(Observação: se você não adicionou um cabeçalho, não marque a caixa ‘Minha tabela tem cabeçalhos’ para que o Excel crie um para você.)
Agora - aparentemente porque o intervalo nomeado original agora faz parte de uma definição de tabela - adicionar uma nova linha ao final da sua lista vertical não apenas expande automaticamente a definição da tabela, mas também a do intervalo nomeado original. na lista de opções da caixa de combinação. Magia!
Responder2
A resposta de Nick sobre o XL 2013 é adequada se você ainda não criou a tabela.
No entanto, é mais simples que isso. Você define um nome apontando para a coluna da tabela. Em seguida, crie outro nome apontando para o primeiro nome. Você pode usar o segundo nome no intervalo de entrada e funciona bem.
Responder3
No Excel 2010 você pode fazer isso, mas é um processo de duas etapas.
- Crie um intervalo nomeado usando a referência estruturada da tabela (por exemplo, myrange=mytable[myColumn3].
- Use o intervalo nomeado como intervalo de entrada do controle.
E, como seria de esperar, o campo de controle é atualizado com as alterações na lista. Não sei por que você não pode usar a referência diretamente no controle - mas ainda não entendo muito sobre o Excel.
EDIT: Não se esqueça de retirar o símbolo @ da referência da tabela no Name Manager, caso contrário, você obterá apenas o valor da linha correspondente para o conjunto de validação (por exemplo, [myColumn3] e não [@ myColumn3]).