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 Office-productiviteitstools
Versterk 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 krijgen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in
- 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!