Auto completar em Excel VBA

Auto completar em Excel VBA

Objetivo: Disponibilizar um exemplo de como podemos fazer um auto completar para listas em Excel.


 O recurso de auto completar no Excel é limitado ao preenchimento automático apenas quando a lista de palavras está acima da palavra que está sendo digitada atualmente.

 Neste artigo é disponibilizado um exemplo de como utilizar o código VBA e o Excel para que possamos auto completar dados com o uso de um formulário e depois jogar este resultado diretamente na célula ativa do Excel.

  Para tanto você pode pressionar o botão que coloquei no formulário, ou ainda melhor, utilizar o atalho CTRL+SHIFT+a que coloquei atribuído ao método que chama o formulário.

  O código completo pode ser visto clicando na guia Desenvolvedor e clicando sobre o objeto do formulário.

'Digite aqui o intervalo a ser autocompletado
Private Const r As String = "A1:A100"
Private sInput As String

'Faz parar a pesquisa dos dados digitados
Dim flParar As Boolean

'Ao digitar deletar ou backspace o sistema limpa a variável de controle para pesquisar novamente
Private Sub txtInput_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    'Limpa a variável de controle
    If (KeyCode = vbKeyBack) Or (KeyCode = vbKeyDelete) Then
        flParar = True
    Else
        flParar = False
    End If
        
    If (KeyCode = 13) Then
        ActiveCell.Value = UserForm1.txtInput.Text
        UserForm1.txtInput.Value = vbNullString
        UserForm1.Hide
    End If
 
End Sub
 
'Faz a busca das palavras
Private Sub txtInput_Change()
    Dim lPalavra As String
    
    If flParar Then
        flParar = False
    Else
        sInput = Left(Me.txtInput, Me.txtInput.SelStart)
        lPalavra = GetFirstCloserWord(sInput)
        If lPalavra & ""  "" Then
            flParar = True
            Me.txtInput.Text = lPalavra
            Me.txtInput.SelStart = Len(sInput)
            Me.txtInput.SelLength = 999999
        End If
    End If
    
End Sub

'Seleciona a primeira letra
Private Function GetFirstCloserWord(ByVal Word As String) As String
    Dim c As Range
    
    For Each c In ActiveSheet.Range(r).Cells
    If LCase(c.Value) Like LCase(Word & "*") Then
            GetFirstCloserWord = c.Value
            Exit Function
        End If
    Next c
    Set c = Nothing
 
End Function

Veja como ficou o formulário:

Para utilizar este formulário você deve clicar com o botão direito sobre o formulário UserForm1 e em Exportar arquivo…, clique depois em Módulo1 e Exportar arquivo…

Feitas estas exportações você deve ir na guia Desenvolvedor com a sua planilha nova aberta e depois clique em qualquer objeto na guia Desenvolvedor e em importar conforme a imagem.

Agora altere o local aonde a lista dos dados estará ativa, o intervalo “A1:A100”.

‘Digite aqui o intervalo a ser autocompletado
Private Const r As String = “A1:A100”

Na planilha você pode atribuir o procedimento Botão1_Clique ao atalho que preferir no teclado clicando na Guia Desenvolvedor->Macros e selecionando o procedimento Botão1_Clique.

GUT PPT

Abraço

Marcos Rieper


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel