Objetivo: Demonstrar como criar uma lista de validação de dados no Excel com o recurso de autocompletar, ou seja, ao serem digitadas as letras a lista seleciona os nomes que iniciam com aquelas letras na lista utilizando VBA.
Neste artigo você verá passo-a-passo como criar uma lista com validação de dados com o recurso autocompletar.
Caso não esteja familiarizado com o recurso de validação de dados veja este artigo: http://guiadoexcel.com.br/validacao-de-dados-excel.
Criando a lista
1. Crie uma lista de dados que serão selecionados. No nosso caso é uma lista de produtos.
2. Clique no local aonde serão inseridas as validações de dados com listas;
3. Clique na guia Dados->Validação de Dados;
4. Selecione a opção Permitir: Listas e em Fonte defina aonde está a sua lista de dados. A lista pode ser selecionada ou digitado o nome do intervalo, no nosso caso temos um intervalo nomeado Lista.
5. A nossa validação de dados já está pronta, você já consegue selecionar os itens na lista a partir da sua lista de validação, porém, ainda não temos o recurso autocompletar, que iremos inserir agora.
Recurso autocompletar
1. Clique na guia Desenvolvedor, para habilitá-la siga as instruções: http://guiadoexcel.com.br/habilitando-a-guia-desenvolvedor-e-copiando-procedimentos-vba-sub-da-internet;
2. Clique no botão Modo de Design e no botão Inserir selecione a opção Caixa de Combinação (Controle ActiveX).
3. Desenhe uma caixa de combinação no Excel em qualquer lugar da planilha;
4. Clique no comboBox criada e na guia Desenvolvedor clique em Propriedades;
5. Na janela que segue altere a propriedade (Name) para TempCombo, conforme a imagem;
6. Clique nesta lista em Font e altere as suas propriedades de fonte e tamanho;
7. Altere a propriedade ListRows conforme a quantidade de itens a serem listados de uma vez, sem rolar a barra, por exemplo 8;
8. Feche a janela Propriedades e clique no botão Modo de Design na guia Desenvolvedor, desmarcando-o.
Inserindo o código VBA
1. Clique na guia Desenvolvedor e no botão Visual Basic;
2. Na árvore de itens do VBA selecione a planilha aonde está a lista de validação de dados e dê um duplo clique, abrindo a área do código;
3. Cole o seguinte código VBA na parte de código fonte da planilha:
Option Explicit
'Baseado em código da www.contextures.com
Private Sub TempCombo_KeyDown(ByVal _
KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
'Ocultar caixa de combinação e mover a próxima célula com Enter e Tab
Select Case KeyCode
Case 9
ActiveCell.Offset(0, 1).Activate
Case 13
ActiveCell.Offset(1, 0).Activate
Case Else
'Nada
End Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Dim wsList As Worksheet
Set ws = ActiveSheet
Set wsList = Sheets(Me.Name)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Application.CutCopyMode Then
'Permite copiar e colar na planilha
GoTo errHandler
End If
Set cboTemp = ws.OLEObjects("TempCombo")
On Error Resume Next
With cboTemp
.Top = 10
.Left = 10
.Width = 0
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With
On Error GoTo errHandler
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
str = Target.Validation.Formula1
str = Right(str, Len(str) - 1)
With cboTemp
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 15
.Height = Target.Height + 5
.ListFillRange = str
.LinkedCell = Target.Address
End With
cboTemp.Activate
'Abrir a lista suspensa automaticamente
Me.TempCombo.DropDown
End If
errHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
End Sub
3. Clique no botão Fechar do VBA, no canto superior direito, e retorne á pasta de trabalho do Excel.
Conclusão e testes
1. Clique sobre o local aonde há a validação de dados e verifique se a lista é apresentada ao clicar, em seguida digite algumas letras para verificar se a lista é filtrada automaticamente;[saiba_mais]
2. Se a lista estiver abrindo e filtrando automaticamente conforme é digitado você fez tudo certo e está funcionando corretamente;
3. Baixe o nosso exemplo clicando no botão Download ao final do artigo para verificar como funciona.
Baixe a planilhaAbraço
Marcos Rieper
Curso Excel Completo – Do Básico ao VBA
Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo:













