Wie kann man eine Textbox automatisch vervollständigen, während man in Excel tippt?
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:
2. Klicken Sie dann auf Entwickler > Einfügen > Listenfeld (ActiveX-Steuerelement), um ein Listenfeld in das aktuelle Arbeitsblatt einzufügen. Siehe Screenshot:
3. Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte und dann im Kontextmenü auf Code anzeigen, wie im folgenden Screenshot gezeigt.
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
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:
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:
- Wie kann man Text in einer Textbox automatisch auswählen, wenn diese in Excel ausgewählt wird?
- Wie kann man den Inhalt einer Textbox löschen, wenn sie in Excel angeklickt wird?
- Wie kann man Texte mehrerer Zellen in eine Textbox in Excel zusammenfügen?
- Wie kann man die Bearbeitung in einer Textbox deaktivieren, um Benutzereingaben in Excel zu verhindern?
- Wie kann man eine Textbox in Excel als Prozentsatz formatieren?
Beste Büroproduktivitätswerkzeuge
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!