Hur fyller jag i en textruta automatiskt när du skriver i Excel?
Som standard kan Excel komma ihåg vad du har angett i celler i det aktuella kalkylbladet och autofullföra detta innehåll nästa gång när du skriver en relaterad initial bokstav i en ny cell. Men om du vill att allt innehåll som du har angett i kalkylbladet ska fyllas i automatiskt i en textruta (ActiveX Control), hur kan du göra det? Den här artikeln ger en VBA-metod som hjälper dig att automatiskt fylla i en textruta när du skriver en första bokstav inuti.
Komplettera automatiskt en textruta när du skriver med VBA-kod
Komplettera automatiskt en textruta när du skriver med VBA-kod
Gör så här för att göra en textruta autofullständig när du skriver en första bokstav i textrutan.
1. Infoga en textruta genom att klicka Utvecklare > Insert > Textruta (ActiveX-kontroll). Se skärmdump:
2. Och klicka sedan på Utvecklare > Insert > Listbox (ActiveX Control) för att infoga en listruta i det aktuella kalkylbladet. Se skärmdump:
3. Högerklicka på arkfliken och klicka sedan på Visa kod från snabbmenyn som visas nedan.
4. I Microsoft Visual Basic för applikationer kopiera och klistra in nedanför VBA-koden i kodfönstret. Och klicka sedan på verktyg > Referensprojekt, och kontrollera sedan Microsoft Scripting Runtime ruta i Referenser - VBAProject dialog ruta. Se skärmdump:
VBA-kod: Komplettera en textruta automatiskt när du skriver
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
Anmärkningar: I koden, ListBox1 samt Textlåda1 är namnet på listrutan och textrutan du har infogat i ditt kalkylblad.
5. tryck på andra + Q för att avsluta Microsoft Visual Basic för applikationer fönster.
6. Stäng av designläget genom att klicka på Utvecklare > Designläge i kalkylbladet.
7. Byt nu till ett annat kalkylblad och gå sedan tillbaka till föregående kalkylblad för att aktivera VBA-koden.
Från och med nu. När du skriver in en första bokstav i textrutan kommer alla texter som börjar med den bokstaven du har skrivit in i kalkylbladet listade i listrutan som finns till höger om textrutan. Dubbelklicka på den du behöver för att ange den i textrutan. Se skärmdump:
Anmärkningar: Du kan använda Up or Ner piltangenten för att flytta bland alla autoslutförda texter i listrutan och tryck sedan på ange för att ange behövs en i textrutan.
Relaterade artiklar:
- Hur markerar jag text i en textruta automatiskt när den väljs i Excel?
- Hur rensar man innehållet i textrutan när man klickar i Excel?
- Hur sammanfoga texter från flera celler till en textruta i Excel?
- Hur inaktiverar du redigering i textrutan för att förhindra användarens inmatning i Excel?
- Hur formaterar jag en textruta i procent i Excel?
Bästa kontorsproduktivitetsverktyg
Överlägsna dina Excel-kunskaper med Kutools for Excel, och upplev effektivitet som aldrig förr. Kutools for Excel Erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid. Klicka här för att få den funktion du behöver mest...
Office Tab Ger gränssnitt med flikar till Office och gör ditt arbete mycket enklare
- Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
- Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
- Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
