Vai al contenuto principale

Come completare automaticamente una casella di testo durante la digitazione in Excel?

Per impostazione predefinita, Excel può ricordare ciò che hai inserito nelle celle del foglio di lavoro corrente e completare automaticamente questo contenuto la prossima volta quando digiti una lettera iniziale correlata in una nuova cella. Tuttavia, se desideri che tutti i contenuti che hai inserito nel foglio di lavoro vengano completati automaticamente in una casella di testo (controllo ActiveX), come potresti fare? Questo articolo fornirà un metodo VBA per aiutarti a completare automaticamente una casella di testo quando digiti una lettera iniziale all'interno.

Completa automaticamente una casella di testo durante la digitazione con codice VBA


Completa automaticamente una casella di testo durante la digitazione con codice VBA

Si prega di fare quanto segue per completare automaticamente una casella di testo quando si digita una lettera iniziale all'interno della casella di testo.

1. Inserire una casella di testo facendo clic Costruttori > inserire > Casella di testo (controllo ActiveX). Vedi screenshot:

2. Quindi fare clic su Costruttori > inserire > Casella di riepilogo (controllo ActiveX) per inserire una casella di riepilogo nel foglio di lavoro corrente. Vedi screenshot:

3. Fare clic con il pulsante destro del mouse sulla scheda del foglio, quindi fare clic su Visualizza codice dal menu contestuale come mostrato nell'immagine sottostante.

4. Nel Microsoft Visual Basic, Applications Edition finestra, copia e incolla sotto il codice VBA nella finestra del codice. Quindi fare clic su Strumenti > Riferimentie quindi controllare il Runtime di script Microsoft casella nella Riferimenti - VBAProject la finestra di dialogo. Vedi screenshot:

Codice VBA: completa automaticamente una casella di testo durante la digitazione

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:: Nel codice, ListBox1 ed Casella di testo 1 sono il nome della casella di riepilogo e della casella di testo che hai inserito nel foglio di lavoro.

5. premi il altro + Q tasti per uscire da Microsoft Visual Basic, Applications Edition finestra.

6. Disattivare la modalità di progettazione facendo clic su Costruttori > Modalità di progettazione nel foglio di lavoro.

7. Ora passa a un altro foglio di lavoro e poi torna al foglio di lavoro precedente per abilitare il codice VBA.

Da ora in poi. Quando inserisci una lettera iniziale nella casella di testo, tutti i testi che iniziano con quella lettera che hai inserito nel foglio di lavoro verranno elencati all'interno della casella di riepilogo che si trova sul lato destro della casella di testo. Fare doppio clic su quello necessario per inserirlo nella casella di testo. Vedi screenshot:

Note:: Puoi usare il Up or giù tasto freccia per spostarsi tra tutti i testi di completamento automatico nella casella di riepilogo, quindi premere il tasto entrare tasto per inserire quello necessario nella casella di testo.


Articoli correlati:

I migliori strumenti per la produttività in ufficio

🤖 Assistente AI di Kutools: Rivoluziona l'analisi dei dati basandosi su: Esecuzione intelligente   |  Genera codice  |  Crea formule personalizzate  |  Analizzare i dati e generare grafici  |  Richiama le funzioni di Kutools...
Funzioni popolari: Trova, evidenzia o identifica i duplicati   |  Elimina righe vuote   |  Combina colonne o celle senza perdere dati   |   Round senza formula ...
Super ricerca: VLookup a criteri multipli    VLookup a valori multipli  |   VLookup su più fogli   |   Ricerca fuzzy ....
Elenco a discesa avanzato: Crea rapidamente un elenco a discesa   |  Elenco a discesa dipendente   |  Elenco a discesa a selezione multipla ....
Gestore di colonna: Aggiungi un numero specifico di colonne  |  Sposta colonne  |  Attiva/disattiva lo stato di visibilità delle colonne nascoste  |  Confronta intervalli e colonne ...
Funzionalità in primo piano: Messa a fuoco della griglia   |  Vista di progettazione   |   Grande barra delle formule    Gestore di cartelle di lavoro e fogli   |  Resource Library (Testo automatico)   |  Date picker   |  Combina fogli di lavoro   |  Crittografa/decrittografa le celle    Invia e-mail per elenco   |  Super filtro   |   Filtro speciale (filtro grassetto/corsivo/barrato...) ...
I 15 migliori set di strumenti12 Testo Strumenti (aggiungi testo, Rimuovi personaggi, ...)   |   50+ Grafico Tipi (Diagramma di Gantt, ...)   |   40+ Pratico Formule (Calcola l'età in base al compleanno, ...)   |   19 Inserimento Strumenti (Inserisci il codice QR, Inserisci immagine dal percorso, ...)   |   12 Conversione Strumenti (Numeri in parole, Conversione di valuta, ...)   |   7 Unisci e dividi Strumenti (Combina righe avanzate, Celle divise, ...)   |   ... e altro ancora

Potenzia le tue competenze di Excel con Kutools per Excel e sperimenta l'efficienza come mai prima d'ora. Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e risparmiare tempo.  Fai clic qui per ottenere la funzionalità di cui hai più bisogno...

Descrizione


Office Tab porta l'interfaccia a schede in Office e semplifica notevolmente il tuo lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
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