Zum Hauptinhalt springen

Wie kann man eine Textbox automatisch vervollständigen, während man in Excel tippt?

Author: Siluvia Last Modified: 2025-05-28

Standardmäßig kann Excel sich daran erinnern, was Sie in Zellen des aktuellen Arbeitsblatts eingegeben haben, und diesen Inhalt beim nächsten Mal automatisch vervollständigen, wenn Sie einen zugehörigen Anfangsbuchstaben in eine neue Zelle eingeben. Wenn Sie jedoch möchten, dass alle Inhalte, die Sie im Arbeitsblatt eingegeben haben, in einer Textbox (ActiveX-Steuerelement) automatisch vervollständigt werden, wie könnten Sie das tun? Dieser Artikel bietet eine VBA-Methode, um Ihnen zu helfen, eine Textbox automatisch zu vervollständigen, wenn Sie einen Anfangsbuchstaben eingeben.

Textbox mit VBA-Code automatisch vervollständigen


Textbox mit VBA-Code automatisch vervollständigen

Bitte gehen Sie wie folgt vor, um eine Textbox automatisch zu vervollständigen, wenn Sie einen Anfangsbuchstaben in die Textbox eingeben.

1. Bitte fügen Sie eine Textbox ein, indem Sie auf Entwickler > Einfügen > Textfeld (ActiveX-Steuerelement) klicken. Siehe Screenshot:

click to insert Text Box

2. Klicken Sie dann auf Entwickler > Einfügen > Listenfeld (ActiveX-Steuerelement), um ein Listenfeld in das aktuelle Arbeitsblatt einzufügen. Siehe Screenshot:

click to insert List Box

3. Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte und dann im Kontextmenü auf Code anzeigen, wie im folgenden Screenshot gezeigt.

click View Code from right click menu

4. Kopieren Sie im Fenster Microsoft Visual Basic for Applications den folgenden VBA-Code und fügen Sie ihn in das Codefenster ein. Klicken Sie dann auf Extras > Verweise und aktivieren Sie das Kontrollkästchen Microsoft Scripting Runtime im Dialogfeld Verweise – VBAProject. Siehe Screenshot:

VBA-Code: Textbox beim Tippen automatisch vervollständigen

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

go to References dialog box and check Microsoft Scripting Runtime

Hinweis: Im Code sind ListBox1 und Textbox1 die Namen des Listenfelds und der Textbox, die Sie in Ihr Arbeitsblatt eingefügt haben.

5. Drücken Sie die Tasten Alt + Q, um das Fenster Microsoft Visual Basic for Applications zu schließen.

6. Schalten Sie den Entwurfsmodus aus, indem Sie auf Entwickler > Entwurfsmodus im Arbeitsblatt klicken.

7. Wechseln Sie nun zu einem anderen Arbeitsblatt und kehren Sie dann zum vorherigen Arbeitsblatt zurück, um den VBA-Code zu aktivieren.

Ab jetzt. Wenn Sie einen Anfangsbuchstaben in die Textbox eingeben, werden alle Texte, die mit diesem Buchstaben beginnen, den Sie in das Arbeitsblatt eingegeben haben, in der Liste rechts neben der Textbox aufgelistet. Doppelklicken Sie auf den gewünschten Eintrag, um ihn in die Textbox einzufügen. Siehe Screenshot:

When entering an initial letter into the textbox, all texts which begin with that letter will be listed

Hinweis: Sie können die Pfeiltasten nach oben oder unten verwenden, um zwischen allen automatisch vervollständigten Texten in der Liste zu navigieren, und dann die Eingabetaste drücken, um den gewünschten Eintrag in die Textbox einzufügen.



Verwandte Artikel:

Beste Büroproduktivitätswerkzeuge

🤖 Kutools AI-Assistent: Revolutionieren Sie die Datenanalyse basierend auf: Intelligente Ausführung   |  Code generieren  |  Benutzerdefinierte Formeln erstellen  |  Daten analysieren und Diagramme generieren  |  Erweiterte Funktionen aufrufen
Beliebte Funktionen: Finden, Hervorheben oder Doppelte markieren   |  Leere Zeilen löschen   |  Spalten oder Zellen kombinieren ohne Datenverlust   |   Runden ...
Erweiterte SVERWEIS: Mehrfachkriterien SVERWEIS    Mehrfachwert SVERWEIS  |   Mehrblatt-SVERWEIS   |   Fuzzy Match ....
Erweiterte Dropdown-Liste: Schnell Dropdown-Liste erstellen   |  Abhängige Dropdown-Liste   |  Mehrfachauswahl Dropdown-Liste ....
Spaltenmanager: Eine bestimmte Anzahl von Spalten hinzufügen  |  Spalten verschieben  |  Sichtbarkeitsstatus ausgeblendeter Spalten umschalten  |  Bereiche & Spalten vergleichen ...
Hervorgehobene Funktionen: Gitterfokus   |  Entwurfsansicht   |   Erweiterte Formelleiste    Arbeitsmappe & Arbeitsblatt-Manager   |  AutoText-Bibliothek (Auto Text)   |  Datumsauswahl   |  Daten zusammenführen   |  Zellen verschlüsseln/entschlüsseln    E-Mail senden nach Liste   |  Spezialfilter   |   Spezialfilter (Filtern fett/kursiv/durchgestrichen...) ...
Top15 Werkzeugsets12 Textwerkzeuge (Text hinzufügen, Bestimmte Zeichen löschen, ...)   |   50+ Diagramm typen (Gantt-Diagramm, ...)   |   40+ Praktische Formeln (Alter basierend auf dem Geburtsdatum berechnen, ...)   |   19 Einfügewerkzeuge (QR-Code einfügen, Bild aus Pfad einfügen, ...)   |   12 Konvertierungswerkzeuge (In Wörter umwandeln, Währungsumrechnung, ...)   |   7 Konsolidieren & Aufteilen Werkzeuge (Erweiterte Zeilen zusammenführen, Zellen aufteilen, ...)   |   ... und mehr

Verbessern Sie Ihre Excel-Fähigkeiten mit Kutools für Excel und erleben Sie Effizienz wie nie zuvor. Kutools für Excel bietet über300 erweiterte Funktionen zur Steigerung der Produktivität und Zeitersparnis.  Klicken Sie hier, um die Funktion zu erhalten, die Sie am meisten benötigen...


Office Tab bringt eine Registerkartenoberfläche zu Office und macht Ihre Arbeit viel einfacher

  • Aktivieren Sie die Bearbeitung und das Lesen mit Registerkarten in Word, Excel, PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters, anstatt in neuen Fenstern.
  • Steigert Ihre Produktivität um50 % und reduziert täglich hunderte von Mausklicks für Sie!