Hoe laat u een tekstvak automatisch aanvullen terwijl u typt in Excel?
Standaard onthoudt Excel wat u heeft ingevoerd in cellen van het huidige werkblad en vult die inhoud automatisch aan zodra u de volgende keer een gerelateerde beginletter typt in een nieuwe cel. Maar hoe zorgt u ervoor dat alle inhoud die u in het werkblad hebt ingevoerd, automatisch wordt aangevuld in een tekstvak (ActiveX-besturingselement)? Dit artikel biedt een VBA-methode waarmee een tekstvak automatisch wordt aangevuld terwijl u een beginletter typt.
Laat een tekstvak automatisch aanvullen tijdens het typen met VBA-code
Laat een tekstvak automatisch aanvullen tijdens het typen met VBA-code
Volg onderstaande stappen om een tekstvak automatisch in te vullen zodra u begint met typen.
1. Voeg eerst een tekstvak in door te klikken op Ontwikkelaar > Invoegen > Tekstvak (ActiveX-besturingselement). Zie afbeelding:

2. Klik vervolgens op Ontwikkelaar > Invoegen > Lijstvak (ActiveX-besturingselement) om een lijstvak in te voegen op het huidige werkblad. Zie afbeelding:

3. Klik met de rechtermuisknop op het bladtabblad en selecteer daarna Code weergeven in het contextmenu, zoals hieronder is weergegeven.

4. In het venster Microsoft Visual Basic for Applications kopieert en plakt u de onderstaande VBA-code in het codovenster. Klik vervolgens op Extra > Referenties en vink daarna het vakje Microsoft Scripting Runtime aan in het dialoogvenster Referenties – VBAProject. Zie afbeelding:
VBA-code: Laat een tekstvak automatisch aanvullen tijdens het typen
Dim xRg As Range
Dim xDic As New Dictionary
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox1.Value = Me.ListBox1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xVal As String
On Error Resume Next
If IsNumeric(Target.Value) Then
xVal = Str(Target.Value)
Else
xVal = Target.Value
End If
If xVal <> "" Then
If Not xDic.Exists(xVal) Then
xDic.Add xVal, xVal
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.ListBox1.Visible = False
End Sub
Private Sub Worksheet_Activate()
Dim I As Long
Dim xStr As String
On Error Resume Next
If xRg Is Nothing Then
Set xRg = ActiveSheet.UsedRange
End If
Me.ListBox1.Visible = False
xDic.RemoveAll
With Me.ListBox1
For I = 1 To xRg.Count
xStr = xRg(I).Value
If xStr <> "" Then
.AddItem xStr
If Not xDic.Exists(xStr) Then
xDic.Add xStr, xStr
End If
End If
Next
End With
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With Me.ListBox1
.Top = Me.TextBox1.Top
.Left = Me.TextBox1.Left + Me.TextBox1.Width
.Width = Me.TextBox1.Width
End With
TextBoxVal Me.TextBox1.Object
End Sub
Sub TextBoxVal(xTextBox As Variant)
Dim I As Long
Dim xStr As String
On Error Resume Next
Application.ScreenUpdating = False
If xRg Is Nothing Then Exit Sub
Me.ListBox1.Clear
xStr = xTextBox.Value
If xStr = "" Then
Me.ListBox1.Visible = False
Application.EnableEvents = True
Exit Sub
End If
For I = 0 To UBound(xDic.Items)
If Left(xDic.Items(I), Len(xStr)) = xStr Then
Me.ListBox1.AddItem xDic.Items(I)
End If
Next
Me.ListBox1.Visible = True
If Me.ListBox1.ListCount > 0 Then
With xTextBox
.Value = Me.ListBox1.List(0)
.SelStart = Len(xStr)
.SelLength = Len(Me.ListBox1.List(0))
End With
End If
Me.ListBox1.Activate
Me.ListBox1.Selected(0) = True
Application.ScreenUpdating = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Me.TextBox1.Value = Me.ListBox1.Value
End If
End Sub 
Opmerking: In de code zijn ListBox1 en Textbox1 de namen van het lijstvak en tekstvak die u in uw werkblad heeft ingevoegd.
5. Druk op Alt + Q om het venster Microsoft Visual Basic for Applications te sluiten.
6. Schakel de ontwerpmodus uit door te klikken op Ontwikkelaar > Ontwerpmodus in het werkblad.
7. Ga nu naar een ander werkblad en keer vervolgens terug naar het vorige werkblad om de VBA-code te activeren.
Vanaf nu worden, bij het invoeren van een beginletter in het tekstvak, alle teksten die beginnen met die letter en die u in het werkblad hebt ingevoerd, weergegeven in het lijstvak rechts van het tekstvak. Dubbelklik op de gewenste tekst om deze in het tekstvak in te voeren. Zie afbeelding:

Opmerking: Gebruik de pijltjestoets Omhoog of pijltjestoets Omlaag om te navigeren tussen alle automatisch aangevulde teksten in het lijstvak, en druk daarna op de Enter-toets om de gewenste tekst in het tekstvak in te voeren.
Gerelateerde artikelen:
- Hoe wijzigt u de tekst in een tekstvak zodra dit is geselecteerd in Excel?
- Hoe wis je de inhoud van een tekstvak met één klik in Excel?
- Hoe voegt u tekst uit meerdere cellen samen in een tekstvak in Excel?
- Hoe schakelt u bewerken in een tekstvak uit om gebruikersinvoer in Excel te voorkomen?
- Hoe maakt u een tekstvak in Excel dat een waarde als percentage weergeeft?
Beste Office-productiviteitshulpmiddelen
Geef uw Excel-vaardigheden een boost met Kutools voor Excel en ervaar efficiëntie zoals nooit tevoren.Kutools voor Excel biedt meer dan 300 geavanceerde functies om de productiviteit te verhogen en Tijd besparen.Klik hier om de functie te krijgen die u het meest nodig heeft...
Office Tab brengt een tabbladinterface naar Office en maakt uw werk veel eenvoudiger
- Schakel tabbladbewerking en -lezen in voor Word, Excel, PowerPoint, Publisher, Access, Visio en Project.
- Open en maak meerdere documenten aan in nieuwe tabbladen binnen hetzelfde venster, in plaats van in afzonderlijke vensters.
- Verhoogt uw productiviteit met 50 % en bespaart u dagelijks honderden muisklikken!
Alle Kutools-add-ins in één installatieprogramma.
Kutools for Office bundelt add-ins voor Excel, Word, Outlook en PowerPoint, plus Office Tab Pro—ideaal voor teams die met meerdere Office-apps werken.
- Alles-in-één suite— add-ins voor Excel, Word, Outlook & PowerPoint plus Office Tab Pro
- Één installatieprogramma, één licentie— binnen enkele minuten klaar (MSI-geschikt)
- Werkt beter samen— gestroomlijnde productiviteit in alle Office-apps
- 30 dagen volledig functionele proefversie— geen registratie, geen creditcard
- Beste prijs-kwaliteitverhouding— bespaar ten opzichte van het afzonderlijk kopen van add-ins