Sunteți pe pagina 1din 25

09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

(https://www.contextures.com/index.html)

Data Validation Combo Box using


Named Ranges
Overcome the limitation of a drop down list by using a combo box, that refers to named ranges which
contain the list items.

NOTE: You can't use ActiveX controls on a Macintosh. Prof. Lee Townsend shows how to create drop
downs using Form control combo boxes (https://uhaweb.hartford.edu/ltownsend/excel.html).

Introduction

Video: Data Validation Combo Box

Set up the Workbook

Create a Dropdown List

Add the Combo box

Open the Properties Window

Change the Combo box Properties

Exit Design Mode

Add the Code

How the Code Works

Test the Code

Adjust the Combo Box Properties

TempCombo_KeyDown Code For Numbers

Dependent Lists With INDIRECT

Dependent Drop Downs- Dynamic Ranges

Buy the Premium Version

Download the Sample File

More Data Validation Tutorials

https://www.contextures.com/xlDataVal11.html 1/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Introduction
You can use Data Validation to create a dropdown list of options in a cell. However, the list font can't be
changed, nor can the number of visible rows, which has a maximum of eight. Also, Data Validation
doesn't have an AutoComplete feature, which finds matching items in the list as you start to type.

To overcome these limitations, you can add a combo box to your worksheet, and use programming to
make it appear in cells that contain a data validation list.

Double-click on a cell that contains a data validation list, and the combo box appears. The combo box's
font size can be set, more than 8 rows can be displayed, and autocomplete can be enabled.

Note: If the worksheet is protected, allow users to Edit Objects, and they will be able to use the
combobox.

https://www.contextures.com/xlDataVal11.html 2/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Name the lists (there are Naming instructions here: Name a Range
(https://www.contextures.com/xlNames01.html#NameBox)):

1. Name the range A1:A7 as DayList


2. Name the range C1:C12 as MonthList

NOTE: If you are using lists in formatted Excel tables, create a named range based on the table column.
Then, create a second named range, based on that first name. Otherwise, the combo box list will be
empty. See detailed instructions on this blog post
(https://contexturesblog.com/archives/2014/09/18/worksheet-combo-box-problem-in-excel-2013/).

Criar uma lista suspensa


O próximo passo é criar as listas suspensas. Há instruções detalhadas aqui: Introdução à Validação de
Dados do Excel (xlDataVal01.html)

As células B2: B12 têm listas de validação de dados com o DayList de origem . Quando uma
célula desse intervalo é selecionada, uma lista suspensa de dias da semana fica disponível.
As células C2: C12 têm listas de validação de dados com a fonte MonthList . Quando uma célula
nesse intervalo é selecionada, uma lista suspensa de meses fica disponível.

Adicione a caixa de combinação


Para adicionar ou editar a caixa de combinação, siga estas etapas:

1. Na faixa de opções, clique na guia Desenvolvedor. Se você não vir a guia Desenvolvedor, siga as
etapas aqui (https://www.contextures.com/excel-macro-record-test.html#ReadyTest) para

https://www.contextures.com/xlDataVal11.html 4/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

mostrá-la.)
2. Clique no comando Design Mode

3. Clique em Inserir e, em Controles ActiveX, clique no botão da caixa de combinação para ativar
essa ferramenta.

4. Clique em uma área vazia da planilha para adicionar uma caixa de combinação

Abra a janela Propriedades


Para formatar a caixa de combinação, abra a janela de propriedades:

1. Clique com o botão direito do mouse na caixa de combinação e clique em Propriedades

Alterar as propriedades da caixa de


combinação
Nomeie a caixa de combinação
1. Na janela Propriedades, clique na caixa Nome
https://www.contextures.com/xlDataVal11.html 5/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Video: Data Validation Combo Box


To see how the combo box works, and appears when you double-click a data validation cell, watch this
short video.

Autocomplete Entries With Excel Drop D…


D…

Set up the Workbook


Name the Sheets
Two worksheets are required in this workbook.

1. Delete all sheets except Sheet1 and Sheet2


2. Rename Sheet1 as ValidationSample
3. Rename Sheet2 as ValidationLists

Check the Zoom Level


IMPORTANT: Keep both sheets (ValidationSample and ValidationLists) at the same zoom
setting, to avoid crashing Excel. There is a strange bug connected to combo boxes and zoom levels.

Type the Lists


On the ValidationLists sheet, type the lists that will be used in the data validation dropdowns:

Tip: Use the AutoFill (https://www.contextures.com/xlDataEntry01.html#Mouse) feature to create the


lists

1. In cells A1:A7 type a list of weekdays


2. In cells C1:C12 type a list of months

https://www.contextures.com/xlDataVal11.html 3/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

2. Digite um nome para a caixa de combinação. Neste exemplo, o nome é: TempCombo

Alterar a fonte e o tamanho da fonte


1. Na janela Propriedades, clique na propriedade Fonte e clique no botão ...

2. Na caixa de diálogo Fonte, selecione uma fonte, tamanho da fonte e outras configurações
desejadas para a sua caixa de combinação e clique em OK.

De na o número de linhas
1. Na janela Propriedades, clique na caixa ListRows
2. Digite o número de linhas que você deseja exibir no menu suspenso. Neste exemplo, a
configuração é: 12

Ativar o preenchimento automático


https://www.contextures.com/xlDataVal11.html 6/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

1. Na janela Propriedades, clique na propriedade MatchEntry


2. Na lista suspensa, selecione 1-frmMatchEntryComplete

Sair do modo de design


1. Feche a janela Propriedades
2. Na guia Desenvolvedor, clique no botão Modo Design , para sair do Modo Design.

Adicione o código
O código do Visual Basic for Applications (VBA) é necessário para fazer a caixa de combinação aparecer
quando você clica duas vezes em uma célula que contém uma lista de validação de dados. Veja detalhes
na próxima seção, para Como o código funciona .

Copie o seguinte código

NOTA: Para datas ou números na validação de dados, você pode usar o código KeyDown na seção
Código para números abaixo .

https://www.contextures.com/xlDataVal11.html 7/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

'==========================
Sub-Planilha Privada_AntesDoubleClick _
(ByVal Target As Range, _
Cancelar como booleano)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Definir ws = ActiveSheet

Defina cboTemp = ws.OLEObjects ("TempCombo")


Em Erro Continuar Avançar
Com o cboTemp
limpar e ocultar a caixa de combinação
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
Terminar com
Em erro GoTo errHandler
If Target.Validation.Type = 3 Então
'se a célula contiver
uma lista de validação de dados
Cancelar = Verdadeiro
Application.EnableEvents = False
'obtenha a fórmula de validação de dados
str = Target.Validation.Formula1
str = Direita (str, Len (str) - 1)
Com o cboTemp
'mostre a caixa de combinação com a lista
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = str
.LinkedCell = Target.Address
Terminar com
cboTemp.Activate
abra a lista suspensa automaticamente
Me.TempCombo.DropDown
Fim se

errHandler:
Application.EnableEvents = True
Sair do Sub

End Sub
'=========================================
Private Sub TempCombo_LostFocus ()
With Me.TempCombo
.Top = 10
.Left = 10
.Width = 0

https://www.contextures.com/xlDataVal11.html 8/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
Terminar com
End Sub
'====================================
Código opcional para mover para a próxima célula
'se Tab ou Enter forem pressionados
'do código por Ted Lanham
'*** NOTA: se KeyDown causar problemas,
'mude para KeyUp
'Tabela com números para outras teclas
'como a seta direita (39)
'https://msdn.microsoft.com/en-us/
library / aa243025% 28v = vs.60% 29.aspx

Private Sub TempCombo_KeyDown (ByVal _


KeyCode como MSForms.ReturnInteger, _
ByVal Shift Como Inteiro)
Select Case KeyCode
Separador Caso 9 '
ActiveCell.Offset (0, 1) .Activate
Caso 13 'Enter
ActiveCell.Offset (1, 0) .Activate
Caso Else
'fazer nada
Finalizar seleção
End Sub
'====================================

Para adicionar esse código à planilha:


1. Clique com o botão direito do mouse na guia da folha ValidationSample e clique em Exibir Código.

2. Escolha Editar | Cole, para colar o código no módulo da planilha, onde o cursor está piscando.
3. Escolha Arquivo | Feche e retorne ao Microsoft Excel.

Como o código funciona


Aqui estão alguns detalhes sobre como o código funciona.

https://www.contextures.com/xlDataVal11.html 9/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Worksheet_BeforeDoubleClick
Este código é executado quando uma célula é clicada duas vezes.

As variáveis são definidas para a planilha ativa e a caixa de combinação denominada TempCombo - use
esse nome para sua caixa de combinação.

Definir ws = ActiveSheet

Defina cboTemp = ws.OLEObjects (" TempCombo ")

Free Grammar
Checker
Eliminate grammar errors instantly
and enhance your writing with
Grammarly

Grammarly DOWNLOAD

A caixa de combinação está oculta e sua célula vinculada e ListFillRange são limpas.

Com o cboTemp
limpar e ocultar a caixa de combinação
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
Terminar com

O tipo de validação de dados para a célula de Destino (a célula ativa) é verificado. Se for do tipo 3 (uma
lista suspensa), o restante do código será executado.

If Target.Validation.Type = 3 Então

A variável str obtém a fórmula de validação de dados para a célula Target. Por exemplo: "= MonthList".
Em seguida, o sinal de igual é removido, usando a função Direita. Isso deixa apenas o nome do intervalo
da lista de validação de dados - "MonthList"

str = Target.Validation.Formula1
str = Direita ( str , Len ( str ) - 1)

A caixa de combinação é tornada visível, e é posicionada no canto superior esquerdo da célula Alvo

Com o cboTemp
'mostre a caixa de combinação com a lista
.Visible = True
.Left = Target.Left
.Top = Target.Top

https://www.contextures.com/xlDataVal11.html 10/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Alteryx 14-Day Free Trial

Break Analytic Barriers


for Faster and Better
Business Insights
Alteryx

A largura e a altura da caixa de combinação são determinadas pela largura e altura da célula de destino,
com uma pequena quantidade adicionada. Você pode alterar o "+5" para um número diferente:

.Width = Target.Width + 5
.Height = Target.Height + 5

O ListFillRange é alterado para a variável str - MonthList - para que a caixa de combinação mostre os
itens desse intervalo nomeado.

.ListFillRange = str

O LinkedCell é alterado para o endereço da célula de destino.

.LinkedCell = Target.Address

A caixa de combinação é ativada e a lista suspensa é aberta.

cboTemp.Activate
Me.TempCombo.DropDown

Fim se

TempCombo_LostFocus
Esse código é executado quando você sai da caixa de combinação

A caixa de combinação está oculta, movida para o canto superior esquerdo da planilha e sua célula
vinculada e ListFillRange são limpas.

With Me.TempCombo
.Top = 10
.Left = 10
.Width = 0
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
Terminar com

https://www.contextures.com/xlDataVal11.html 11/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

3. Clique no comando Propriedades.

4. Na janela Propriedades, selecione TempCombo na lista suspensa

5. Ajuste as propriedades que você deseja alterar


NOTA : A largura e a altura da caixa de combinação são definidas na macro - a alteração desses
valores na janela de propriedades não terá efeito a longo prazo. Edite o código, se quiser alterar o
tamanho.

6. Quando terminar, feche a janela Propriedade e clique no botão Design para sair do modo Design.

Código TempCombo_KeyDown para


números
Os valores que você seleciona em uma caixa de combinação são tratados como texto e podem causar
problemas se sua lista suspensa contiver números (incluindo datas e horas).

Na captura de tela abaixo, uma hora foi selecionada e, embora a célula esteja formatada para Hora, ela
aparece na célula como um número decimal longo. A entrada é realmente texto, não um número;
portanto, a formatação do número não a afeta.

https://www.contextures.com/xlDataVal11.html 13/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Teste o código
IMPORTANTE: mantenha as duas folhas (ValidationSample e ValidationLists) na mesma
configuração de zoom, para evitar falhas no Excel. Há um bug estranho conectado às
caixas de combinação e aos níveis de zoom.

1. Clique duas vezes em uma das células que contém uma lista de validação de dados.
2. A caixa de combinação aparecerá
3. Selecione um item na lista suspensa da caixa de combinação ou comece a digitar, e o item será
preenchido automaticamente

4. Clique em uma célula diferente para selecioná-la


5. O item selecionado aparece na célula anterior e a caixa de combinação desaparece.

Ajustar as propriedades da caixa de


combinação
Se você decidir alterar as propriedades da caixa de combinação posteriormente, pode ser difícil
encontrar a caixa de combinação na planilha, porque o código altera sua largura para zero.

Siga estas etapas para localizar a caixa de combinação e ajuste suas propriedades:

Free Intelligent Writing Tool


Polish your words and sound the best you possibly can. Try
Grammarly today

Grammarly DOWNLOAD

1. Na faixa de opções, clique na guia Desenvolvedor.


2. Clique no comando Design Mode
https://www.contextures.com/xlDataVal11.html 12/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Para enviar os números para a planilha como números reais, em vez de texto, use o seguinte código, em
vez do código TempCombo_KeyDown acima.

Depois de selecionar um número (ou data ou hora) na lista suspensa da caixa de combinação, pressione
a tecla Enter ou a tecla Tab para mover para a próxima célula.

Certi cado
digital gratuito
Seu certi cado digital A1
pode sair de graça. É só
assinar qualquer plano do
eGestor eGestor.

NOTA: Esse código é usado no arquivo de exemplo, que você pode baixar abaixo . Você pode testá-lo na
coluna D na folha Amostra de validação.

https://www.contextures.com/xlDataVal11.html 14/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

'====================================
Código opcional para mover para a próxima célula
'se Tab ou Enter forem pressionados
'do código por Ted Lanham
'*** NOTA: se KeyDown causar problemas,
'mude para KeyUp

Private Sub TempCombo_KeyDown (ByVal _


KeyCode como MSForms.ReturnInteger, _
ByVal Shift Como Inteiro)
'mova para a próxima célula em Enter e Tab
Dim varVal como variante
Em Erro Continuar Avançar
'altere o valor do texto para número, se possível
varVal = --ActiveCell.Value
Se IsEmpty (varVal), então
varVal = ActiveCell.Value
Fim se

Select Case KeyCode


Separador Caso 9 '
ActiveCell.Value = varVal
ActiveCell.Offset (0, 1) .Activate
Caso 13 'enter
ActiveCell.Value = varVal
ActiveCell.Offset (1, 0) .Activate
Caso Else
'fazer nada
Finalizar seleção
End Sub
'====================================

Listas Dependentes Com INDIRECT


Se algumas de suas listas suspensas tiverem validação de dados dependente (xlDataVal02.html) ,
usando uma fórmula INDIRECT simples, você poderá adicionar algumas linhas de código para lidar
com essas listas.

No código existente no módulo de folha ValidationSample, procure as seguintes linhas:

Application.EnableEvents = False
str = Target.Validation.Formula1
str = Direita (str, Len (str) - 1)

https://www.contextures.com/xlDataVal11.html 15/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

Alteryx 14-Day Free Trial

Break Analytic Barriers


for Faster and Better
Business Insights
Alteryx

Abaixo dessas linhas, adicione as seguintes linhas de código, para manipular fórmulas INDIRECT
simples, como = INDIRECT (E2)

Isso é usado para a lista suspensa Cidade no arquivo de exemplo Dependent Combo abaixo.

'para função INDIRETA simples (inglês)


«por exemplo, = INDIRETO (B2)
'criará uma lista dependente de itens
Se Esquerda (str, 4) = "INDI" Então
lSplit = InStr (1, str, "(")
str = Direita (str, Len (str) - lSplit)
str = Esquerda (str, Len (str) - 1)
str = Intervalo (str) .Value
Fim se

Drop Downs dependentes - listas dinâmicas


Para listas suspensas baseadas em intervalos nomeados dinâmicos (xlNames01.html#Dynamic) ,
adicione mais algumas linhas de código para lidar com essas listas. O Excel não permitirá que você use
alguns nomes de intervalo dinâmico na propriedade ListFillRange da caixa de combinação, portanto,
essa solução alternativa adiciona todos os itens da lista dinâmica.

O código verifica a propriedade ListFillRange, para ver se corresponde ao nome da fonte da lista
suspensa.
Se não corresponderem, o código definirá um intervalo, com base no nome e no endereço da
planilha para o intervalo nomeado dinâmico.
Em seguida, o ListFillRange é definido para esse nome e endereço da planilha.

Faça o download do arquivo de amostra para ver o código completo das listas dependentes com
intervalos dinâmicos:

https://www.contextures.com/xlDataVal11.html 16/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

.ListFillRange = str
If .ListFillRange <> str Then
'para intervalos nomeados dinâmicos
str = Target.Validation.Formula1
str = Direita (str, Len (str) - 1)
Definir wb = ActiveWorkbook
Defina nm = wb.Names (str)
Defina wsNm = wb.Worksheets _
(nm.RefersToRange.Parent.Name)
Defina rng = wsNm.Range _
(nm.RefersToRange.Address)
.ListFillRange = "'" & wsNm.Name _
& "'!" & rng.Address
Fim se

Compre a versão Premium


Existe uma versão premium dessa técnica e você pode ver os detalhes aqui: Validação de dados Multi
Select Premium (https://www.contextures.com/datavalidationmultiselectpremium.html) . Ele é
executado em uma planilha protegida e funciona com as listas suspensas mais dependentes.

In the premium version, a list box automatically appears when you select a cell that has a drop down
list. You can set it to allow selection of a single item (button), or multiple items.

(https://www.contextures.com/datavalidationmultiselectpremium.html)

(https://www.contextures.com/datavalidationmultiselectpremium.html)

For multiple selections, the listbox pre-selects any items that are already in the cell. It also has buttons
to Clear all the selections, and select all the items.

https://www.contextures.com/xlDataVal11.html 17/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

The kit has a setup sheet, that lets you quickly customize the listbox, and details on how to add this
technique to your own workbooks. See the details here: Data Validation Multi Select Premium
(https://www.contextures.com/datavalidationmultiselectpremium.html).

Download the Sample File


1. To test the combo box code, you can download the zipped sample file (DataValComboboxSheet.zip).

2. Para a amostra Dependent Combo, clique aqui para fazer o download


(vbasamples/datavalcomboboxdepend.zip) .

3. Este arquivo de exemplo mostra uma caixa de combinação para listas suspensas dependentes com
base em um intervalo nomeado dinâmico (datavalidationsamples/datavalcombodepdynamic.zip) .

Mais tutoriais de validação de dados


Noções básicas de validação de dados (xlDataVal01.html)

Criar listas dependentes (xlDataVal02.html)

Recursos da caixa de combinação (https://www.contextures.com/exceldatavalcomboresources.html)

Use uma lista de outra pasta de trabalho (xlDataVal05.html)

Caixa de combinação de validação de dados (xlDataVal10.html)

Caixa de combinação de validação de dados - clique em (xlDataVal14.html)

Links Relacionados
Validação de dados Multi Select Premium
(https://www.contextures.com/datavalidationmultiselectpremium.html)

Noções básicas de validação de dados (xlDataVal01.html)

Recursos da caixa de combinação


(https://www.contextures.com/exceldatavalcomboresources.html)

Criar listas dependentes (xlDataVal02.html)

Use uma lista de outra pasta de trabalho (xlDataVal05.html)

Caixa de combinação de validação de dados (xlDataVal10.html)

Caixa de combinação de validação de dados - clique em (xlDataVal14.html)

https://www.contextures.com/xlDataVal11.html 18/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

(https://www.contextures.com/signup01)

(30excelfunctionsin30days01.html)

https://www.contextures.com/xlDataVal11.html 19/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

(https://www.contextures.com/datavalidationmultiselectpremium.html)

https://www.contextures.com/xlDataVal11.html 20/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

(/xlPivotPremAddIn.html)

https://www.contextures.com/xlDataVal11.html 22/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

(https://www.contextures.com/exceltoolsaddin.html)

https://www.contextures.com/xlDataVal11.html 24/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

(/xlPivotPremAddIn.html)

Direitos autorais © Contextures Inc. 2020


Tutoriais do Excel (https://www.contextures.com/tiptech.html)
Arquivos de exemplo do Excel (https://www.contextures.com/excelfiles.html)
Contextures Products (https://www.contextures.com/contexturesproducts.html)

Sobre Contextures (https://www.contextures.com/about.html)


Política de Privacidade (https://www.contextures.com/privacy.html)
Boletim Excel (https://www.contextures.com/newsletter/ctxnewsindexlist.html)

(https://mvp.microsoft.com/en-us/mvp/Debra%20%20Dalgleish-7612)Debra Dalgleish
(https://mvp.microsoft.com/en-us/mvp/Debra%20%20Dalgleish-7612)

Última atualização: 9 de setembro de 2019 12:03

https://www.contextures.com/xlDataVal11.html 25/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

https://www.contextures.com/xlDataVal11.html 21/25
09/07/2020 Caixa de combinação de validação de dados do Excel usando intervalos nomeados

https://www.contextures.com/xlDataVal11.html 23/25

S-ar putea să vă placă și