E' possibile in Excel (direttamente o mediante una userform in VBA) creare una maschera con due menu a tendina (tipo l'utilizzo del convalida per selezionare da un elenco) in cui la seconda lista dipenda dalla selezione fatta nella prima? In pratica, se ad esempio ho una tabella con due campi: uno contiene i nomi delle città e l'altro le nazioni corrispondenti. Posso fare in modo che, una volta selezionata la nazione, il secondo menu a tendina mostri solo le città di quella nazione?
In estrema sintesi si vogliono due ComboBox (caselle combinate) dove la seconda contiene i nomi dei clienti presenti nella provincia indicata da una prima combobox. Al variare della prima combobox, l'elenco della seconda si deve adattare di conseguenza.
La cosa è di semplice realizzazione. Per prima cosa è necessario avere il database che associa ad ogni città la nazione corrispondente come ad esempio il seguente:

Ora è necessario generare le due liste che servirranno per riempire le due combobox. La prima sarà un elenco statico delle nazioni, la seconda sarà una lista dinamica che si aggiorna automaticamente utilizzando l'informazione estratta dalla prima lista. La generazione automatica della seconda lista si ottiene utilizzando la funzione NLookup presentata su www.terzaghi.it:

La parte gialla indica l'anagrafica usata nella prima combobox mentre la colonna J calcola attraverso la NLookup i vari elementi (fino a 13 ma la colonna è facilissimanete espandibile). Come vedete la NLookup è parametrata in funzione della cella E2 che contiene il risultato della scelta dell'utente attraverso la prima combobox.
La colonna K attraverso una semplice formula sostituisce ai messaggi di errore uno spazio bianco in modo da rendere più piacevole alla vista la combobox che prenderà a questo punto dalla colonna K e non dalla J.
La cella E1 contiene il valore numerico di uscita della combobox e la cella E2 attraverso la funzione INDICE ritrasforma il valore numerico nella scelta dell'utente. Per maggior informazioni si veda la pagina dedicata alla combobox.
La cella F2 contiene a qesto punto la scelta della seconda Combobox e la cella F2 ritrasforma il valore nella scelta dell'utente.
A questo punto la seconda combobox è dinamica nella lista di scelte che presenta rispetto alla scelta della prima.
Ora con una semplie formula è possibile recuperare il valore del DB dopo aver scelto prima la provincia e poi all'interno dell'elenco dei soli clienti di quella provincia:

La funzione utilizzata per recuperare il valore è spiegata in questa pagina dedicata ai SOMMA.SE con multiple condizioni.
| Attachment | Size |
|---|---|
| caselle_combinate_dinamiche.zip | 14.6 KB |
Scarica la Toolbar!
Post new comment