Combobox-Completamento testo

di il
3 risposte

Combobox-Completamento testo

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".

Grazie in anticipo.
Andrea

3 Risposte

  • Re: Combobox-Completamento testo

    Buongiorno,
    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:

    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

    In questo modo i valori proposti dalla combobox sono corretti, però il problema che riscontro ora è che non riesco a selezionarne nessuno! Cioè cliccando su un valore della lista, sembra che riparta la routine e il valore restituito è "vuoto".
    Dove sbaglio?
    C'è un modo + semplice per arrivare al risultato?
    Grazie mille.
    Andrea
  • Re: Combobox-Completamento testo

    Primo: non si capisce se usi VB6 o VBA, devi indicarlo espressamente
    Secondo: cosa c'entra EXCEL (ovvero usi Excel da VB6, oppure il VBA di Excel) ?
    Terzo: devi formattare il codice come richiesto dal Regolamento
  • Re: Combobox-Completamento testo

    Mi scuso per le informazioni mancanti e per il testo non formattato.
    Dunque:

    1) Uso VBA Ver. 6.5
    2) Uso il VBA di Excel
    3) ecco il codice formattato:
    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
    Grazie
    Andrea
Devi accedere o registrarti per scrivere nel forum
3 risposte