Collegare più liste di dati con Excel 2007 e VBA

di Giulio Vito de Musso

Pubblicato 24 Febbraio 2010
Aggiornato 12 Febbraio 2018 20:41

Le liste di dati permettono di effettuare un input controllato, su un foglio di calcolo, in modo da limitare la libertà di inserimento e migliorare il controllo e la convalida dei dati.

Una ulteriore comodità è utilizzare liste il cui contenuto sia dinamico e dipendente dal valore di altre liste. Vedremo oggi come implementare facilmente questa funzionalità tramite VBA.

In questo esempio collegheremo fra loro solo due liste, ma il procedimento è facilmente ampliabile. Organizziamo nel modo seguente il foglio di calcolo:

  • nella prima colonna inseriamo le voci della prima lista;
  • nella seconda colonna inseriamo i dati che dovranno comparire qualora si scegliesse nella prima lista la prima voce;
  • continuiamo così per tutte le voci della prima lista.

Adesso clicchiamo nel Ribbon “Sviluppo” -> “Inserisci” e dai controlli ActiveX inseriamo nel nostro foglio due “Caselle di riepilogo” senza rinominarle.

Clicchiamo sempre dal menu Sviluppo il pulsante “Visual Basic” per aprire l’editor VBA. Facciamo doppio click sull’oggetto “Foglio1” e inseriamo il seguente codice:

Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox2.Clear
i = 1
While Foglio1.Cells(i, 2 + ListBox1.ListIndex) < > "
Foglio1.ListBox2.AddItem (Cells(i, 2 + ListBox1.ListIndex))
i = i + 1
Wend
End Sub

Adesso apriamo l’ogetto “This workbook” e inseriamo il seguente codice:

Private Sub Workbook_Open()
Foglio1.ListBox1.Clear
i = 1
While Foglio1.Cells(i, 1) < > "
Foglio1.ListBox1.AddItem (Foglio1.Cells(i, 1))
i = i + 1
Wend
End Sub

Fatto ciò salviamo il foglio di lavoro con l’estensione “.XLSM” e riavviamo l’applicazione. Se tutto sarà stato fatto in maniera corretta, all’avvio verrà caricata la prima lista di dati e, cliccando uno degli elementi della prima lista, verrà caricata la seconda con i relativi dati.