Skip to main content

Come abilitare l'autocompletamento in una casella di testo durante la digitazione in Excel?

Author: Siluvia Last Modified: 2025-05-29

Di default, Excel è in grado di ricordare ciò che hai inserito nelle celle del foglio di lavoro corrente e di autocompletare questo contenuto la prossima volta che digiti una lettera iniziale correlata in una nuova cella. Tuttavia, se desideri che tutto il contenuto precedentemente inserito nel foglio di lavoro venga automaticamente suggerito in una casella di testo (controllo ActiveX), come puoi fare? Questo articolo fornirà un metodo VBA per aiutarti ad abilitare l'autocompletamento in una casella di testo quando si digita una lettera iniziale al suo interno.

Abilitare l'autocompletamento in una casella di testo durante la digitazione con codice VBA


Abilitare l'autocompletamento in una casella di testo durante la digitazione con codice VBA

Ecco i passaggi da seguire per configurare una casella di testo in modo che si autocompleti quando si digita una lettera iniziale all'interno della casella stessa.

1. Inserisci una casella di testo facendo clic su Sviluppatore > Inserisci > Casella di Testo (Controllo ActiveX). Vedi screenshot:

click to insert Text Box

2. Successivamente, fai clic su Sviluppatore > Inserisci > Casella di Selezione (Controllo ActiveX) per inserire una casella di selezione nel foglio di lavoro corrente. Vedi screenshot:

click to insert List Box

3. Fai clic con il tasto destro sulla scheda del foglio, quindi seleziona Visualizza Codice dal menu contestuale come mostrato nello screenshot sottostante.

click View Code from right click menu

4. Nella finestra Microsoft Visual Basic for Applications, copia e incolla il seguente codice VBA nella finestra del Codice. Dopodiché, fai clic su Strumenti > Riferimenti e seleziona la casella Microsoft Scripting Runtime nella finestra di dialogo Riferimenti – VBAProject. Vedi screenshot:

Codice VBA: Abilitare l'autocompletamento in 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

go to References dialog box and check Microsoft Scripting Runtime

Nota: Nel codice, ListBox1 e Textbox1 sono i nomi della casella di selezione e della casella di testo che hai inserito nel tuo foglio di lavoro.

5. Premi i tasti Alt + Q per uscire dalla finestra Microsoft Visual Basic for Applications.

6. Disattiva la Modalità Progettazione facendo clic su Sviluppatore > Modalità Progettazione nel foglio di lavoro.

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

Da ora in poi, quando inserisci una lettera iniziale nella casella di testo, tutti i testi che iniziano con quella lettera precedentemente inseriti nel foglio di lavoro verranno elencati all'interno della casella di selezione posizionata sul lato destro della casella di testo. Fai doppio clic su quello desiderato per inserirlo nella casella di testo. Vedi screenshot:

When entering an initial letter into the textbox, all texts which begin with that letter will be listed

Nota: Puoi utilizzare i tasti freccia Su o Giù per spostarti tra tutti i testi di autocompletamento presenti nella casella di selezione, quindi premere il tasto Invio per inserire quello desiderato nella casella di testo.



Articoli correlati:

I migliori strumenti per la produttività in Office

🤖 Kutools AI Aide: Rivoluziona l'analisi dei dati grazie a: Esecuzione Intelligente | Genera Codice | Crea Formule Personalizzate | Analizza Dati e Genera Grafici | Richiama Funzioni avanzate di Kutools
Funzionalità popolari: Trova, evidenzia o contrassegna duplicati | Elimina righe vuote | Unisci colonne o celle senza perdere dati | Arrotonda...
Super RICERCA.VERT: Ricerca VERT con criteri multipli | Ricerca VERT con valori multipli | Ricerca su più fogli | Corrispondenza approssimativa...
Elenco a discesa avanzato: Crea rapidamente un elenco a discesa | Elenco a discesa dipendente | Elenco a discesa multi-selezione...
Gestione Colonne: Aggiungi un numero specifico di colonne | Sposta colonne | Attiva/disattiva la visibilità delle colonne nascoste | Confronta intervalli e colonne...
Funzionalità in evidenza: Attenzione della griglia | Visualizzazione di progettazione | Barra delle formule avanzata | Gestione Cartella di lavoro e Foglio di lavoro | Libreria AutoText | Selettore di data | Unisci dati | Crittografa/Decrittografa celle | Invia Email tramite elenco | Super Filtri | Filtro speciale (filtra grassetto/corsivo/barrato...) ...
Top15 set di strumenti:12 strumenti di testo (Aggiungi testo, Elimina Caratteri Specifici, ...) | Oltre50 tipi di grafici (Diagramma di Gantt, ...) | Oltre40 formule pratiche (Calcola l'età in base alla data di nascita, ...) |19 strumenti di inserimento (Inserisci codice QR, Inserisci Immagine da percorso, ...) |12 strumenti di conversione (Converti in parole, Conversione valuta, ...) |7 strumenti di unione e divisione (Unione avanzata righe, Dividi celle, ...) | ... e molto altro

Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un'efficienza mai vista prima. Kutools per Excel offre oltre300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Clicca qui per ottenere la funzione di cui hai più bisogno...


Office Tab porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice

  • 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, invece che in nuove finestre.
  • Aumenta la tua produttività del50% e riduce centinaia di clic del mouse ogni giorno!