Hoe een tekstvak automatisch aanvullen tijdens het typen in Excel?
Standaard kan Excel onthouden wat u in de cellen van het huidige werkblad hebt ingevoerd en deze inhoud de volgende keer automatisch aanvullen wanneer u een gerelateerde beginletter in een nieuwe cel typt. Als u echter wilt dat alle inhoud die u in het werkblad hebt ingevoerd automatisch wordt aangevuld in een tekstvak (ActiveX-besturingselement), hoe zou u dat dan kunnen doen? Dit artikel biedt een VBA-methode om u te helpen bij het automatisch aanvullen van een tekstvak wanneer u een eerste letter erin typt.
Vul automatisch een tekstvak in tijdens het typen met VBA-code
Vul automatisch een tekstvak in tijdens het typen met VBA-code
Ga als volgt te werk om een tekstvak automatisch aan te vullen wanneer u een eerste letter in het tekstvak typt.
1. Voer een tekstvak in door op te klikken Ontwikkelaar > Invoegen > Tekstvak (ActiveX-besturingselement). Zie screenshot:
2. En klik dan Ontwikkelaar > Invoegen > Keuzelijst (ActiveX-besturingselement) om een keuzelijst in het huidige werkblad in te voegen. Zie screenshot:
3. Klik met de rechtermuisknop op de bladtab en klik vervolgens op Bekijk code vanuit het contextmenu zoals hieronder getoond screenshot.
4. In de Microsoft Visual Basic voor toepassingen venster, kopieer en plak de onderstaande VBA-code in het codevenster. En klik dan Tools > Referentiesen controleer vervolgens de Microsoft Scripting-runtime box aan de Referenties - VBAProject dialoog venster. Zie screenshot:
VBA-code: vul een tekstvak automatisch aan 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
Note: In de code, LijstBox1 en Tekstvak1 zijn de naam van de keuzelijst en het tekstvak die u in uw werkblad hebt ingevoegd.
5. druk de anders + Q toetsen om het Microsoft Visual Basic voor toepassingen venster.
6. Schakel de ontwerpmodus uit door op te klikken Ontwikkelaar > Ontwerpmodus in het werkblad.
7. Ga nu naar een ander werkblad en ga dan terug naar het vorige werkblad om de VBA-code in te schakelen.
Vanaf nu. Wanneer u een beginletter in het tekstvak invoert, worden alle teksten die beginnen met die letter die u in het werkblad hebt ingevoerd, weergegeven in de keuzelijst aan de rechterkant van het tekstvak. Dubbelklik op de benodigde om deze in het tekstvak in te voeren. Zie screenshot:
Note: U kunt de gebruiken Up or Beneden pijltoets om door alle automatisch aangevulde teksten in de keuzelijst te bladeren en druk vervolgens op Enter toets om de benodigde in het tekstvak in te voeren.
Gerelateerde artikelen:
- Hoe automatisch tekst van een tekstvak selecteren wanneer deze is geselecteerd in Excel?
- Hoe de inhoud van het tekstvak te wissen wanneer erop wordt geklikt in Excel?
- Hoe teksten van meerdere cellen samen te voegen in een tekstvak in Excel?
- Hoe kan ik bewerken in tekstvak uitschakelen om te voorkomen dat de gebruiker in Excel invoert?
- Hoe een tekstvak opmaken als een percentage in Excel?
Beste Office-productiviteitstools
Geef uw Excel-vaardigheden een boost met Kutools voor Excel en ervaar efficiëntie als nooit tevoren. Kutools voor Excel biedt meer dan 300 geavanceerde functies om de productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die u het meest nodig heeft...
Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
- Verhoogt uw productiviteit met 50% en vermindert honderden muisklikken voor u elke dag!