Lista de validação de dados Excel com autocompletar VBA

Filtro automático com data no Excel matricial
Filtro automático com data no Excel matricial
1 de maio de 2015
Classificar tabela dinâmica Excel automaticamente
Classificar tabela dinâmica Excel automaticamente
14 de maio de 2015

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.Lista autocompletar Excel

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.

Lista autocompletar Excel 2

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.

Lista autocompletar Excel 3

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).

Lista autocompletar Excel 4

3. Desenhe uma caixa de combinação no Excel em qualquer lugar da planilha;

Lista autocompletar Excel 5

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;

Lista autocompletar Excel 6

6. Clique nesta lista em Font e altere as suas propriedades de fonte e tamanho;

Lista autocompletar Excel 7

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;

Lista autocompletar Excel 8

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]

Lista autocompletar Excel 9

2. Se a lista estiver abrindo e filtrando automaticamente conforme é digitado você fez tudo certo e está funcionando corretamente;

Cursos do Guia do Excel - Destaque-se no mercado de trabalho

3. Baixe o nosso exemplo clicando no botão Download ao final do artigo para verificar como funciona.

Download “Lista de dados com autocompletar” ListaDadosExcelTamanhoDinamico.zip – Baixado 152 vezes – 74 KB

Abraço

Marcos Rieper

79 Comentários

  1. Adriano disse:

    Ola! não estou conseguindo implementar esta solução para uma validação de dados que utiliza como FONTE DE DADOS a fórmula INDIRETO. Existe alguma forma de adaptar este código para atender minha necessidade?

    • Marcos Duarte disse:

      Olá, esse recurso é simplesmente sensacional, principalmente para mim, que, tenho uma lista extensa de dados. Parabéns.

      Mas tive que inserir uma nova célula e a planilha acabou retornando a lista de procura convencional, gostaria de retomá-la, mas estou com dúvidas, há como fazer esse procedimento e a planilha voltar ao recurso autocompletar?

      Obrigado!
      Aguardo!!!

    • Nelisa disse:

      Olá Marcos, muito obrigada por compartilhar seus conhecimentos! minha dúvida já foi questionada por outro colega, mas não encontrem DE DADOS a fórmula INDIRETO. Existe alguma forma de adaptar este código para atender minha necessidade?

      Muito Obrigada !

  2. Jean Carlos disse:

    Busquei esta solução a algum tempo e não encontrava nenhum artigo.

    Parabenizo os criados e obrigado pela ajuda.

    Abraço,

  3. Leandro disse:

    Muito boa essa ferramenta!

    Como faço para adicionar essa lista dinamica no seguinte exemplo: http://guiadoexcel.com.br/auto-completar-em-excel-vba

    Necessidade: selecionar uma celula, clicar no botão auto completar, na janela que abrir ao digitar aparecer a lista dinamica, dar enter ou clicar na opcao correta, preencher a celula selecionado anteriormente com o dado escolhido na lista dinamica.

    Pode me ajudar?

    Desde de já agradeço a atenção!

  4. gostaria de uma ajuda,
    preciso que na minha validação sejam ignorados os seguintes valores:

    ” – ” e ” ” (espaço em branco)

    obs.: esses valores vêm de uma fórmula,
    exemplo: =se(D4=”300″;”-“;C4;)

    como coloco essas restrições no vba?
    obrigado

  5. DRK1997 disse:

    Ola amigo funciona perfeitamente, mas gostaria de restringir a uma unica coluna da planilha é possível ou é possível personalizar para outras colunas de acordo com as validações criadas para cada uma?

    • Marcos Rieper disse:

      Boa tarde DRK,

      Coloque uma verificação em : Private Sub Worksheet_SelectionChange(ByVal Target As Range) identificando se o intervalo é aquele aonde quer colocar a validação.

      At.
      Marcos Rieper

      • Daniel disse:

        Olá, em sua resposta” Coloque uma verificação em : Private Sub Worksheet_SelectionChange(ByVal Target As Range) identificando se o intervalo é aquele aonde quer colocar a validação.” Como coloco para pegar apenas a coluna C8:C80? Como eu escreveria isso?

        • Marcos Rieper disse:

          Boa tarde Daniel,

          Substitua o procedimento abaixo por este código. A linha If Target.Column = 3 And (Target.Row >= 8 And Target.Row < = 80) Then irá validar se irá utilizar o autocompletar ou não. Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim str As String Dim cboTemp As OLEObject Dim ws As Worksheet Dim wsList As Worksheet If Target.Column = 3 And (Target.Row >= 8 And Target.Row <= 100) Then 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 End If errHandler: Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End Sub At. Marcos Rieper

  6. Arthur Gonzaga disse:

    Como eu poderia adicionar nesse código algo que oculte os resultados “em branco” ou nomes repetidos?

    • Marcos Rieper disse:

      Boa tarde Arthur,

      Te mandei um exemplo de como fazer o que você precisa, só os repetidos é que eu não sabia, mas neste caso utilize também a função CONT.SE, para identificar se a já não foi contado antes.

      At.
      Marcos Rieper

  7. Daniel disse:

    Como eu coloco para utilizar a formula apenas na coluna C8:C100?

    • Marcos Rieper disse:

      Boa tarde Daniel,

      Substitua o procedimento abaixo por este código. A linha If Target.Column = 3 And (Target.Row >= 8 And Target.Row < = 100) Then irá validar se irá utilizar o autocompletar ou não. Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim str As String Dim cboTemp As OLEObject Dim ws As Worksheet Dim wsList As Worksheet If Target.Column = 3 And (Target.Row >= 8 And Target.Row <= 100) Then 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 End If errHandler: Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End Sub At. Marcos Rieper

  8. fmcblues disse:

    Funcionou perfeitamente aqui!
    Tudo sem um erro sequer…

    Como faria para aplicar somente à célula C3? Porque tenho várias listas suspensas, uma sobre a outra… Mas gostaria de aplicar somente à lista existente na célula C3.

    Muito obrigado!

    • Marcos Rieper disse:

      Bom dia fmcblues,

      Substitua o procedimento Worksheet_SelectionChange do modelo pelo abaixo:

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim str As String
      Dim cboTemp As OLEObject
      Dim ws As Worksheet
      Dim wsList As Worksheet

      If Target.Address = "$C$3" Then
      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
      End If

      errHandler:
      Application.ScreenUpdating = True
      Application.EnableEvents = True
      Exit Sub

      End Sub

      Abraço
      Marcos Rieper

  9. Raphael Bravo disse:

    Olá Marcos, sua explicação foi perfeita e realmente era o que precisava, só com uma ressalva. Como eu poderia fazer para a validação de dados recusar itens extra lista suspensa?

  10. Jackson Souza disse:

    Olá Marcos, tenho uma planilha de orçamentos e estou inserindo este método, porém precisava que a fórmula aplicasse apenas linha a linha. Como devo proceder?

    • Marcos Rieper disse:

      Substitua o procedimento Worksheet_SelectionChange do modelo pelo abaixo, mudando o target address pelo endereço que desejar.

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim str As String
      Dim cboTemp As OLEObject
      Dim ws As Worksheet
      Dim wsList As Worksheet

      If Target.Address = “$C$3” Then
      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
      End If

      errHandler:
      Application.ScreenUpdating = True
      Application.EnableEvents = True
      Exit Sub
      End Sub

      Abraço
      Marcos Rieper

  11. Gabriela disse:

    Boa tarde Marcos,

    A sua orientação funciona quando aplico na mesma aba que possui a lista suspensa.
    Como faço quando a lista suspensa está em uma aba diferente da validação de dados? Há alguma maneira?

    Desde já agradeço.

    • Marcos Rieper disse:

      Boa noite Gabriela,

      Em versões antigas do Excel não era possível utilizar validação apontando diretamente para os endereços de célula quando este era em outra planilha da pasta de trabalho.

      Para evitar incompatibilidade use sempre intervalos nomeados, conforme demonstrado no artigo. Desta forma não haverá esta incompatibilidade.

      Abraço
      Marcos Rieper

  12. Edvan Pereira Lima disse:

    Bom dia! Fiz o Teste aqui, porém a lista dinâmica ficou somente na combobox, é isso mesmo? Fiz o download do exemplo e acontece a mesma coisa… 🙁
    Não tem como deixar isso para todo intervalo da validação de dados????

  13. Rodrigo Diniz disse:

    Olá Marcos boa tarde!
    Executou tudo realmente como eu precisava, só um porém. Realmente a planilha não recusa inserção de itens extra lista. Fiz um teste na planilha disponibilizada para download e ocorreu o mesmo erro (consegui digitar “blablabla”).
    Outra dúvida, tem como proteger a planilha disponibilizando apenas a coluna com a validação de dados para outra pessoa trabalhar sem estragar tudo naquele esquema “permitir que usuários editem intervalos”? Tentei fazer isso mas deu erro.
    No mais obrigado! Foi de grande ajuda! Está de parabéns!!

  14. Alice disse:

    Olá Marcos,
    funcionou perfeitamente para minha necessidade! Muito obrigada!
    No entanto, quando coloco a planilha em modo compartilhado, a função não funciona mais 🙁
    Sei que quando compartilhamos algumas macros não funcionam mesmo… mas teria algum jeito de contornar isso?
    Muito obrigada!

  15. Alice disse:

    Marcos,
    muito obrigada pela rápida resposta!
    Abs
    Alice

  16. Julia disse:

    Olá Marcos,
    Este procedimento é perfeito, mas estou com uma necessidade onde preciso trazer informações sobre um mesmo item, mas este item tem 5 colunas de descrição.

    Como faço para trazer as informações correspondentes caso o usuário apenas preencha uma célula aleatória dentre estas 5?

    Obrigada por sua contribuição para espalhar conhecimento!

    • Marcos Rieper disse:

      Boa noite Júlia,

      Não entendi bem o que quer dizer com aleatório, mas se quiser trazer as informações correspondentes das outras células de uma mesma linha selecionada, você pode usar a função PROCV.

      Abraço
      Marcos Rieper

  17. Dany Corrêa disse:

    Primeiramente parabéns pelo trabalho desenvolvido aqui. Fiz esse procedimento Lista de validação de dados Excel com autocompletar VBA e funcionou. A pergunta que faço como fazer o código pegar meus dados validados em outras planilhas dentro da mesma pasta de trabalho?

    • Marcos Rieper disse:

      Olá Dani,

      Será necessário criar para cada uma das planilhas, porque tem que incluir o componente nela.

      Obrigado pela visita e comentário.

      • Dany Correa disse:

        Obrigado pela Resposta. Oque eu preciso mudar nesse código para que ele ao invés de autocompletar, quando digitado um determinado nome por ex. Luiz Roberto Santos, eu digite parte do nome por ex: roberto e ele me retorne as opções encontradas.

  18. Rodrigo Barbosa disse:

    Muito obrigado me ajudou bastante, agora eu estava precisando de mais uma coisa teria como fazer para o codigo retornar opções digitando qualquer palavra das opções e não apenas da primeira palavra? EX: Maria José Barbosa, digitando Barbosa ou José ela apareceria entre as opções, e se tem como ocultas as outras opção que não são parecidas com o que digitei. desde já agradeço a atenção

  19. Marcos Duarte disse:

    Olá, esse recurso é simplesmente sensacional, principalmente para mim, que, tenho uma lista extensa de dados. Parabéns.

    Mas tive que inserir uma nova célula e a planilha acabou retornando a lista de procura convencional, gostaria de retomá-la, mas estou com dúvidas, há como fazer esse procedimento e a planilha voltar ao recurso autocompletar?

    Obrigado!
    Aguardo!!!

  20. Jacqueline Vieira disse:

    Bom dia, usei o código e funciona na perfeição mas apenas se eu digitar o nome talqual está registado, não consigo que ele procure a palavra em qualquer ponto do texto… pode ajudar-me

  21. Renan Caruso disse:

    Boa noite Marcos,
    Tenho três validações de dados na mesma aba, gostaria que ela funcionasse em apenas duas, como faço para a validação da célula F2 não alterar?
    Grato,
    Renan.

  22. Renan Caruso disse:

    Boa tarde Marcos, o intervalo desejado é esse, porém não sei como escrever, tentei deste modo mas não deu certo, como posso fazer?

    If Target.Address = “$A$2:$A$150” Or “$N$2” Then

    At. Renan 😉

  23. Juliano A. Andreazza disse:

    Parabéns Marcos pelo brilhante trabalho e compartilhar, gostaria de saber se existe como realizar a pesquisa por um pedaço do nome e a lista localiza-se não importando se esta no inicio, meio ou fim.

    Exemplo:
    LETICIA APARECIDA FERREIRA DOS SANTOS

    Atualmente ferramenta irá localizar se digitarmos LETICIA, gostaria de digitar FERREIRA e a lista demonstra-se todos os nomes que contenham a descrição FERREIRA

    • Marcos Rieper disse:

      Olá Juliano,

      Entendi o que necessita, mas o componente não tem esta funcionalidade, o que tornaria muito custoso realizar esta programação e não valeria muito a pena.

      Procure por lista de dados com filtro automático no site, veja se não ajuda. =D

  24. Marcos Túlio de Almeida Alves disse:

    Marcos Rieper, boa tarde!

    Eu gostaria de saber, se tem como fazer a busca por qualquer palavra. Exemplo: tenho um item da lista que seria Marcos Riper, hoje se eu digitar mar, ele já sugeriria o resto, porém se eu digitar Riper ele não iria achar beleza? Se eu quiser que ele busque a semelhança de nome em toda a frase da lista. Tem como? Desde de já grato pelo ótimo tutorial

  25. Maicon disse:

    Bom dia !

    Realizei todo procedimento conforme descrito e funcionou corretamente na minha máquina. Mas como esse arquivo é utilizado em rede quando o documento é aberto em outra máquina a macro para de funcionar e da erro na TempCombo. Abaixo segue linha de comando que o erro aparece.

    Abrir a lista suspensa automaticamente
    Me.TempCombo.DropDown
    End If
    End If

  26. PEDRO MANIERO disse:

    Por que nao consigo digitar mais nada em nenhuma celula depois que o cod corre? Só se eu entar e sair da planilha eu consigo digitar. ( Nao consigo digitar em celulas que nao tem dados validados).

  27. Ricardo Thomaz disse:

    Bom dia Marcos!

    Parabéns pela iniciativa e soluções!

    Tenho uma pergunta: Implementei esta rotina para autocompletar em minhas planilhas, funcionou bem no começo, mas depois sempre de algum tempo ocorre um problema, Sempre que clico em uma célula que possui a função autocompletar o excel fecha e tenta recuperar o arquivo, estou usando o excel 2016.
    Abraço Ricardo Thomaz

    • Marcos Rieper disse:

      Olá Ricardo,

      Temos que analisar o problema.

      Você alterou a sua versão do sistema operacional ou da planilha? O sistema gera algum erro? Se recriar o objeto na planilha, apagando o antigo e criando um novo, ele continua dando erro?

      Abraço
      Marcos Rieper

  28. Jorge Santos disse:

    Olá Marcos,
    Parabéns pelo código, o procedimento é perfeito.
    A duvida é:
    A minha lista vai da linha D11 a D22, como intercalar um código neste exemplo avisando que não pode haver nomes repetidos e espaço vazio entre linhas.
    Obrigado.

  29. Thiago Terra disse:

    Marcos uma dúvida, é possível deixar o tamanho de altura e largura do combo fixo?
    Ele fica ultrapassando o limite da célula eu não gostaria disso e quando eu “clico fora” ainda fica aparecendo o combo, gostaria que sumisse ou que ficasse pelo menos em um tamanho determinado.

  30. jm disse:

    Boa tarde Marcos!

    Por favor, como faço para utilizar esse código de autocomplete em várias listas que terão as mesmas informações?

  31. Neto disse:

    Boa tarde,

    Quando eu salvo a planilha aparece o seguinte erro:
    os recursos a seguir não podem ser salvos em pastas de trabalho sem macro:
    Projeto do vb

    como faço para corrigir?

    Att,
    Neto

  32. Tiago Sena disse:

    Boa tarde Marcos!

    Fiz o procedimento e deu certo, porem tenho uma lista com itens na horizontal e os subitens na vertical, e nessa não funciona, aparece apenas o primeiro nome da lista.

  33. Johnathan disse:

    Boa tarde Marcos Rieper, perfeito o tutorial, mais gostaria de saber como que eu coloco essa função em uma Userform VBA, direto em uma combobox.

  34. Gabriela disse:

    Boa Tarde Marcos Rieper,
    Primeiro ótimo post seu, me ajudou muito!
    Queria só tirar uma duvida, ao usar essa lista se autocompletando eu não consigo fazer validar a função PROCV, é normal? Ou será que preciso fazer alguma restrição? Muito obrigada!

  35. Paulo Cesar disse:

    Marcos,bom dia.
    Primeiramente parabéns pelo post.
    Fiz o procedimento para procura automática e funcionou para a tabela completa, porém, gostaria de limitá-lo somente a uma lista de validação que fica em células mescladas (H25:N26), tentei fazer conforme seu exemplo acima para a célula “C3”, mudando somente o endereço das células, mas não consegui.
    Poderia por favor me ajudar?
    Obrigado

    • Marcos Rieper disse:

      Bom dia Paulo,

      Para fazer isso basta colocar o código da SelectionChange entre estes códigos:

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If (Target.Column >= 8 And Target.Column < = 14) And (Target.Column >= 25 And Target.Column <= 26) Then MsgBox "teste" End If End Sub

  36. Paulo CesarBoratto disse:

    Boa noite Marcos.
    No seu código acima, tem como inserir bloqueio do auto preenchimento para uma célula com validação de dados lista , de modo que para as outras células também com validação de dados lista funcione o auto preenchimento?
    obrigado.

  37. Bruno Mosé disse:

    Fala Marcos,
    Excelente post, demorei muito para achar algo realmente útil para minha planilha de fluxo de caixa, porém tem 3 coisas que gostaria de mudar e queria saber como.
    1 – As Setas para movimentar entre as células não funcionam com essa combox, como habilita-las para poder facilitar o manuseio da planilha.
    2 – Enquanto estou escrevendo a caixa onde estou escrevendo não da pra ler, e assim que acabo de escrever, fica como se fosse uma caixa branca tapando a célula.
    3 – É possível desconsiderar os números, já que é um plano de contas?

  38. Ana Cláudia Corrêa disse:

    Olá Marcos!!

    Gostei muito do seu post!!! Parabéns pela iniciativa em ajudar!!!
    Só precisava de um upgrade.. pesquisar não só apenas o início do texto mas qualquer parte da palavra tem como ou seria algo mais complexo, já fiz uma vez mas não me recordo!:(
    Exemplo:
    Produto Novo 1
    Produto novo 2
    Digitando Nov ele demonstraria uma lista contendo esses dois itens.
    Consegue me ajudar?
    Agradeço muito pela atenção!
    Att.
    Ana.

  39. Maria Edduarda Machado Coite disse:

    Boa tarde Marcos,

    Muito bom o seu post e ele funcionou perfeitamente. Porém ele não limita os itens que estão inseridos somente na lista, ou seja, ele permite que eu digite qualquer texto que esteja fora da lista. Sabe informar como faço para evitar que isso aconteça?

    Obrigada!

  40. Roberta disse:

    Boa Tarde,

    Está dando certo porem, ao salvar, ele pede para que seja criado a macro.
    Poderiam me auxiliar

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.