Hoppa till huvudinnehåll

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 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:

Bästa kontorsproduktivitetsverktyg

🤖 Kutools AI Aide: Revolutionera dataanalys baserat på: Intelligent utförande   |  Generera kod  |  Skapa anpassade formler  |  Analysera data och generera diagram  |  Anropa Kutools funktioner.
Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50+ Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för 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...

Beskrivning


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!
Comments (1)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Why would anyone go for writing a script when there are simpler ways to get a dropdown list???
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations