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: