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
- Återanvänd allt: Lägg till de mest använda eller komplexa formlerna, diagrammen och allt annat till dina favoriter och återanvänd dem snabbt i framtiden.
- Mer än 20 textfunktioner: Extrahera nummer från textsträng; Extrahera eller ta bort en del av texterna; Konvertera siffror och valutor till engelska ord.
- Sammanfoga verktyg: Flera arbetsböcker och ark till en; Slå ihop flera celler / rader / kolumner utan att förlora data; Slå samman duplicerade rader och summa.
- Dela verktyg: Dela data i flera ark baserat på värde; En arbetsbok för flera Excel-, PDF- eller CSV-filer; En kolumn till flera kolumner.
- Klistra över Dolda / filtrerade rader; Räkna och summa av bakgrundsfärg; Skicka personliga e-postmeddelanden till flera mottagare i bulk.
- Superfilter: Skapa avancerade filterscheman och tillämpas på alla ark; Svart per vecka, dag, frekvens och mer; Filter med fetstil, formler, kommentarer ...
- Mer än 300 kraftfulla funktioner; Fungerar med Office 2007-2021 och 365; Stöder alla språk; Enkel implementering i ditt företag eller organisation.
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 > Referenser, 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 och 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?
De bästa Office-produktivitetsverktygen
Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%
- återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
- Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
- Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
- Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
- Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
- Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
- Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
- Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
- Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.

Fliken Office ger ett flikgränssnitt 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!
