Wie vervollständige ich ein Textfeld beim Eingeben in Excel automatisch?
Standardmäßig kann sich Excel merken, was Sie in die Zellen des aktuellen Arbeitsblatts eingegeben haben, und diesen Inhalt beim nächsten Eingeben eines zugehörigen Anfangsbuchstabens in eine neue Zelle automatisch vervollständigen. Wenn Sie jedoch alle Inhalte, die Sie in das Arbeitsblatt eingegeben haben, in einem Textfeld (ActiveX Control) automatisch vervollständigen möchten, wie können Sie dies tun? Dieser Artikel enthält eine VBA-Methode, mit der Sie ein Textfeld automatisch vervollständigen können, wenn Sie einen Anfangsbuchstaben eingeben.
Vervollständigen Sie ein Textfeld automatisch, wenn Sie mit VBA-Code eingeben
Vervollständigen Sie ein Textfeld automatisch, wenn Sie mit VBA-Code eingeben
Gehen Sie wie folgt vor, damit ein Textfeld automatisch vervollständigt wird, wenn Sie einen Anfangsbuchstaben in das Textfeld eingeben.
1. Bitte fügen Sie ein Textfeld ein, indem Sie auf klicken Entwickler:in / Unternehmen > Insert > Textfeld (ActiveX-Steuerelement). Siehe Screenshot:
2. Und dann klicken Entwickler:in / Unternehmen > Insert > Listenfeld (ActiveX Control) um ein Listenfeld in das aktuelle Arbeitsblatt einzufügen. Siehe Screenshot:
3. Klicken Sie mit der rechten Maustaste auf die Registerkarte Blatt, und klicken Sie dann auf Code anzeigen aus dem Kontextmenü wie unten Screenshot gezeigt.
4. In dem Microsoft Visual Basic für Applikationen Bitte kopieren Sie den folgenden VBA-Code und fügen Sie ihn in das Code-Fenster ein. Und dann klicken Tools > Bibliographieund überprüfen Sie dann die Microsoft Scripting-Laufzeit Box in der Referenzen - VBAProject Dialogbox. Siehe Screenshot:
VBA-Code: Vervollständigen Sie beim Eingeben automatisch ein Textfeld
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
Note: Im Code, ListBox1 und Textfeld1 sind die Namen des Listenfelds und des Textfelds, die Sie in Ihr Arbeitsblatt eingefügt haben.
5. Drücken Sie die Taste Andere + Q Tasten zum Verlassen des Microsoft Visual Basic für Applikationen Fenster.
6. Schalten Sie den Entwurfsmodus aus, indem Sie auf klicken Entwickler:in / Unternehmen > Entwurfsmodus im Arbeitsblatt.
7. Wechseln Sie nun zu einem anderen Arbeitsblatt und kehren Sie zum vorherigen Arbeitsblatt zurück, um den VBA-Code zu aktivieren.
Von nun an. Wenn Sie einen Anfangsbuchstaben in das Textfeld eingeben, werden alle Texte, die mit dem Buchstaben beginnen, den Sie in das Arbeitsblatt eingegeben haben, im Listenfeld auf der rechten Seite des Textfelds aufgelistet. Bitte doppelklicken Sie auf die gewünschte, um sie in das Textfeld einzugeben. Siehe Screenshot:
Note: Du kannst den ... benutzen Up or Nach unten Pfeiltaste, um zwischen allen Texten mit automatischer Vervollständigung im Listenfeld zu wechseln, und drücken Sie dann die Taste Enter Geben Sie die erforderliche Taste in das Textfeld ein.
In Verbindung stehende Artikel:
- Wie wähle ich automatisch Text eines Textfelds aus, wenn es in Excel ausgewählt wird?
- Wie lösche ich den Inhalt des Textfelds, wenn ich in Excel klicke?
- Wie verkette ich Texte mehrerer Zellen in ein Textfeld in Excel?
- Wie deaktiviere ich die Bearbeitung im Textfeld, um Benutzereingaben in Excel zu verhindern?
- Wie formatiere ich ein Textfeld als Prozentsatz in Excel?
Beste Office-Produktivitätstools
Verbessern Sie Ihre Excel-Kenntnisse mit Kutools für Excel und erleben Sie Effizienz wie nie zuvor. Kutools für Excel bietet über 300 erweiterte Funktionen, um die Produktivität zu steigern und Zeit zu sparen. Klicken Sie hier, um die Funktion zu erhalten, die Sie am meisten benötigen ...
Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich
- Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
- Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
- Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!