Come abilitare l'autocompletamento in una casella di testo durante la digitazione in Excel?
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:
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:
3. Fai clic con il tasto destro sulla scheda del foglio, quindi seleziona Visualizza Codice dal menu contestuale come mostrato nello screenshot sottostante.
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
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:
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:
- Come selezionare automaticamente il testo di una casella di testo quando viene selezionata in Excel?
- Come cancellare il contenuto di una casella di testo quando viene cliccata in Excel?
- Come concatenare i testi di più celle in una casella di testo in Excel?
- Come disabilitare la modifica in una casella di testo per impedire l'inserimento dell'utente in Excel?
- Come formattare una casella di testo come percentuale in Excel?
I 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 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!