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