combobox a ricerca testo dinamica
Hai un problema con Excel? 
combobox a ricerca testo dinamica
di Andrea (utente non iscritto) data: 27/04/2016 11:47:10
Buongiorno a tutti,
Problema: Ho una Combobox che prende i suoi dati da un range definito nella proprietà "ListFillRange". Supponiamo che i valori siano:
Sicilia
Liguria
Lombardia
Piemonte
Normalmente quando si inizia a digitare la prima lettera, la Combobox "suggerisce" la 1a corrispondenza nell'elenco. Così se digito "L" mi suggerirà "Liguria". Se oltre alla "L" digito la "i" mi suggerirà "Liguria" e così via....
Io vorrei trovare il modo che se l'operatore digita un lemma (supponiamo "monte") la Combobox mi restituisce tutte le parole che "CONTENGONO" io lemma e non solo quelle che "INIZIANO PER".
Ho provato a risolvere il mio problema sfruttando l'evento CHANGE.
Praticamente ad ogni lettera inserita dall'operatore nella combobox "ARTICOLO1" il codice va a verificare se il lemma è presente nel database LISTA_ARTICOLI (colonna A) e se trova la corrispondenza la scrive in "colonna X".
La lista della colonna X viene poi utilizzata come impostazione della proprietà "LISTFILLRANGE" della combobox ARTICOLO1.
Qui di seguito vi copio il codice scritto.
Grazie mille
Andrea
Private Sub ARTICOLO1_CHANGE()
RIGAFINEARTICOLI = Worksheets("LISTA_ARTICOLI").Range("A" & Rows.Count).End(xlUp).Row ' INDICA IL NUMERO DI RIGA DELL'ULTIMO ARTICOLO
Workbooks("MODELLO_CAMPIONATURE").Sheets("LISTA_ARTICOLI").Range("X1:X10000") = "" ' CANCELLA LA LISTA ARTICOLI TEMPORANEA DA USARE NELLA COMBOBOX
For i = 1 To RIGAFINEARTICOLI
TESTO1 = Workbooks("MODELLO_CAMPIONATURE").Sheets("LISTA_ARTICOLI").Range("A" & i) 'LEGGE IL VALORE DELL'ARTICOLO
If TESTO1 Like "*" & ARTICOLO1.text & "*" Then ' CONFRONTA IL LEMMA NELLA COMBOBOX CON L'ARTICOLO
y = y + 1
Workbooks("MODELLO_CAMPIONATURE").Sheets("LISTA_ARTICOLI").Range("X" & y) = TESTO1 ' SE LA CORRISPONDENZA VIENE TROVATA, SCRIVE NELLA COLONNA X
Else
End If
Next i
ARTICOLO1.ListFillRange = ("LISTA_ARTICOLI!X1:X" & y) 'IMPOSTA LA PROPRIETA' "LISTFILLRANGE" DELLA COMBOBOX ALLA COLONNA X APPENA CREATA
End Sub
|
di patel data: 27/04/2016 11:51:17
per testare il codice occorre un file di esempio
di Andrea (utente non iscritto) data: 27/04/2016 12:41:27
Ho aggiunto un file di esempio.
Il codice funziona solo sulla prima combobox del form corrispondente alla cella A5.
Digitando "ia" compariranno nella combobox solo le regioni che contengono il lemma"ia".
Ma poi non riesco a far assumere alla combobox alcun valore.
Andrea
di alfrimpa data: 27/04/2016 14:33:27
Ciao Andrea
Provo a proporti un approccio diverso da quello che tu hai seguito.
Ti ho allegato un file (Andrea.xlsm) dove se sul foglio1 ti posizioni su una delle gialle ti comparirà una userform al cui interno ci sono una textbox ed una listbox.
Nel momento in cui digiti qualcosa nella textbox la listbox si popola dei soli valori che iniziano con le lettere digitate nella textbox.
Una volta individuato l'elemento cliccando sulla listbox il suo valore verrà immesso nella cella attiva su foglio1.
Prova un po' e dimmi cosa ne pensi.
Alfredo
di Andrea (utente non iscritto) data: 27/04/2016 17:10:23
Grazie mille,
Secondo te, si potrebbe usare il metodo "find" per far ricercare la parte di testo digitata all'interno dei singoli valori?
Digitando ad esempio "ia" il risultato dovrebbe essere "Liguria, Lombardia, Puglia, Sicilia"
Andrea
di alfrimpa data: 27/04/2016 18:51:25
Ciao Andrea
Devi fare la modifica che vedi sotto.
Alfredo
Sostituire
If Left(sh.Range("A" & lng).Value, Len(Me.TextBox1.Text)) = Me.TextBox1.Text Then
con
If InStr(sh.Range("A" & lng).Value, Me.TextBox1.Text) Then |
di Andrea (utente non iscritto) data: 27/04/2016 22:36:35
Grazie mille!
Vuoi Approfondire?