Come attivare il completamento automatico in una casella di testo mentre si digita in Excel?
Per impostazione predefinita, Excel ricorda ciò che hai inserito nelle celle del foglio di lavoro corrente e completa automaticamente il contenuto la volta successiva quando digiti una lettera iniziale corrispondente in una nuova cella. Tuttavia, se desideri che tutti i contenuti inseriti nel foglio di lavoro vengano completati automaticamente anche in una casella di testo (controllo ActiveX), come puoi fare? Questo articolo presenta un metodo VBA per abilitare il completamento automatico in una casella di testo durante la digitazione di una lettera iniziale.
Completamento automatico di una casella di testo durante la digitazione con codice VBA
Completamento automatico di una casella di testo durante la digitazione con codice VBA
Segui questi semplici passaggi per attivare il completamento automatico in una casella di testo non appena digiti una lettera iniziale.
1. Inserisci una casella di testo facendo clic su Sviluppo > Inserisci > Casella di testo (controllo ActiveX). Vedi screenshot:

2. Quindi fai clic su Sviluppo > Inserisci > Casella elenco (controllo ActiveX) per inserire una casella elenco nel foglio di lavoro corrente. Vedi screenshot:

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

4. Nella finestra di Microsoft Visual Basic for Applications, copia e incolla il seguente codice VBA nella finestra del codice. Quindi, fai clic su Strumenti > Riferimenti e seleziona la casella Microsoft Scripting Runtime nella finestra di dialogo Riferimenti – VBAProject. Vedi screenshot:
Codice VBA: Completamento automatico di 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 
Nota: nel codice, ListBox1 e Textbox1 sono i nomi della casella elenco e della casella di testo inserite nel foglio di lavoro.
5. Premi i tasti Alt+Q per uscire dalla finestra di Microsoft Visual Basic for Applications.
6. Disattiva la modalità progettazione facendo clic su Sviluppo > Modalità progettazione nel foglio di lavoro.
7. Passa ora a un altro foglio di lavoro e torna a quello precedente per attivare il codice VBA.
D’ora in poi, quando inserirai una lettera iniziale nella casella di testo, tutti i testi del foglio di lavoro che iniziano con quella lettera verranno elencati nella casella elenco situata a destra della casella di testo. Fai doppio clic sull’elemento desiderato per inserirlo nella casella di testo. Vedi screenshot:

Nota: puoi usare i tasti freccia Su o Giù per spostarti tra tutte le opzioni proposte nel completamento automatico dell’elenco, quindi premere il tasto Invio per inserire l’elemento desiderato nella casella di testo.
Articoli correlati:
- Come fare in modo che il testo di una casella di testo venga selezionato automaticamente quando la casella è attivata in Excel?
- Come si fa a cancellare automaticamente il contenuto di una casella di testo al clic in Excel?
- Come si fa a unire il testo di più celle in una singola casella di testo in Excel?
- Come disabilitare la modifica in una casella di testo per impedire all’utente di inserire dati in Excel?
- Come si formatta una casella di testo come percentuale in Excel?
Migliori Strumenti per la Produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un’efficienza mai vista prima.Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità 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 all’interno della stessa finestra, invece che in finestre separate.
- Aumenta la tua produttività del 50 % e risparmia centinaia di clic del mouse ogni giorno!
Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.
Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse app di Office.
- Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Un unico programma di installazione, una sola licenza— configurazione in pochi minuti (pronto per MSI)
- Funziona meglio insieme— produttività ottimizzata tra le app di Office
- Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
- Miglior rapporto qualità-prezzo— risparmia rispetto all’acquisto dei singoli componenti aggiuntivi