Hoe een tekstvak automatisch aan te vullen tijdens het typen in Excel?
Standaard kan Excel onthouden wat u hebt ingevoerd in cellen van het huidige werkblad en deze inhoud automatisch aanvullen de volgende keer dat u een gerelateerde beginletter typt in een nieuwe cel. Als u echter wilt dat alle inhoud die u in het werkblad hebt ingevoerd automatisch wordt aangevuld in een tekstvak (ActiveX Control), hoe kunt u dit dan doen? Dit artikel biedt een VBA-methode om u te helpen een tekstvak automatisch aan te vullen wanneer u een beginletter typt.
Een tekstvak automatisch aanvullen tijdens het typen met VBA-code
Een tekstvak automatisch aanvullen tijdens het typen met VBA-code
Volg de onderstaande stappen om een tekstvak automatisch aan te vullen wanneer u een beginletter typt in het tekstvak.
1. Voeg een tekstvak in door te klikken op Ontwikkelaar > Invoegen > Tekstvak (ActiveX Control). Zie screenshot:

2. Klik vervolgens op Ontwikkelaar > Invoegen > Keuzelijst (ActiveX Control) om een keuzelijst in het huidige werkblad in te voegen. Zie screenshot:

3. Klik met de rechtermuisknop op het tabblad van het werkblad, en klik vervolgens op Weergave Code in het contextmenu zoals weergegeven in de onderstaande screenshot.

4. Kopieer en plak in het venster Microsoft Visual Basic for Applications de onderstaande VBA-code in het Code-venster. Klik vervolgens op Tools > References, en vink het vakje Microsoft Scripting Runtime aan in het dialoogvenster References – VBAProject. Zie screenshot:
VBA-code: 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 de keuzelijst en het tekstvak die u in uw werkblad hebt ingevoegd.
5. Druk op de toetsen 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 ga vervolgens terug naar het vorige werkblad om de VBA-code te activeren.
Vanaf nu. Wanneer u een beginletter invoert in het tekstvak, worden alle teksten die beginnen met die letter die u in het werkblad hebt ingevoerd, weergegeven in de keuzelijst die zich aan de rechterkant van het tekstvak bevindt. Dubbelklik op degene die u nodig heeft om deze in het tekstvak in te voeren. Zie screenshot:

Opmerking: U kunt de pijl-omhoog- of pijl-omlaag-toets gebruiken om tussen alle automatisch aan te vullen teksten in de keuzelijst te bewegen, en druk vervolgens op de Enter-toets om de gewenste tekst in het tekstvak in te voeren.
Gerelateerde artikelen:
- Hoe selecteer je automatisch tekst van een tekstvak wanneer het is geselecteerd in Excel?
- Hoe wis je de inhoud van een tekstvak wanneer erop geklikt wordt in Excel?
- Hoe voeg je teksten van meerdere cellen samen in een tekstvak in Excel?
- Hoe schakel je bewerken in een tekstvak uit om gebruikersinvoer te voorkomen in Excel?
- Hoe formatteer je een tekstvak als een percentage in Excel?
Beste productiviteitstools voor Office
Verbeter je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te kiezen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Activeer tabbladbewerking en -lezen in Word, Excel, PowerPoint, Publisher, Access, Visio en Project.
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
- Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!
Alle Kutools-invoegtoepassingen. Eén installatieprogramma
Kutools for Office-suite bundelt invoegtoepassingen voor Excel, Word, Outlook & PowerPoint plus Office Tab Pro, ideaal voor teams die werken met Office-toepassingen.
 
  
  
  
 
- Alles-in-één suite — invoegtoepassingen voor Excel, Word, Outlook & PowerPoint + Office Tab Pro
- Eén installatieprogramma, één licentie — in enkele minuten geïnstalleerd (MSI-ready)
- Werkt beter samen — gestroomlijnde productiviteit over meerdere Office-toepassingen
- 30 dagen volledige proef — geen registratie, geen creditcard nodig
- Beste prijs — bespaar ten opzichte van losse aanschaf van invoegtoepassingen