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.

Abraço
Marcos Rieper





