Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Utilizzando una UserForm si potrebbe pensare ad una ComboBox popolata con i nomi e ad una ListBox che si popola in base al nome selezionato nella ComboBox.
Qui trovi un file di esempio
File esempio Tabella Pagamenti
Nel file è presente una UserForm con i seguenti elementi:
Label1 con descrizione Elenco Nomi
ComboBox nominata ElencoNomi che si popola con i nomi presenti in colonna B1
ListBox nominata Intestazioni che viene popolata con dei valori per crare una "riga" di intestazioni.
ListBox RiepilogoDati dove vengono riportate tre colonne di dati. Una prima colonna è di tipo descrittivo (Rata n. ...) e nelle altre due colonne, in base al nome selezionato, vengono riportati rispettivamente gli importi delle rate gli importi pagati.
Vedi immagine allegata del risultato ottenuto:
Nella UserForm è presente il seguente codice:
'---
Option Explicit
Const sNomeFoglio As String = "Foglio1" '<--- Nome del Foglio dove sono presenti i dati
Const sPrimaCella As String = "B1" '<--- cella in cui si trova il primo dato (nome)
Const NumeroRate As Long = 25 '<--- numero rage corrispondenti alle colonne da C a AA e da AC a BA
Dim Wb As Workbook
Dim Ws As Worksheet
Dim Frng As Range
Dim Lrng As Range
Private Sub UserForm_Initialize()
Set Wb = ThisWorkbook
Set Ws = Wb.Worksheets(sNomeFoglio)
Set Frng = Ws.Range(sPrimaCella)
Set Lrng = Ws.Cells(Ws.Rows.Count, Frng.Column).End(xlUp)
With Me
.Caption = "Tabella Pagamenti"
.ElencoNomi.List = Ws.Range(Frng, Lrng).Value
.RiepilogoDati.ColumnCount = 3
With .Intestazioni
.ColumnCount = 3
.Enabled = False
.SpecialEffect = fmSpecialEffectFlat
.BackColor = &H8000000F
.Height = 25
.AddItem
.List(.ListCount - 1, 0) = "Numero Rata"
.List(.ListCount - 1, 1) = "Importo Rata"
.List(.ListCount - 1, 2) = "Importo Pagato"
End With
End With
End Sub
Private Sub ElencoNomi_Click()
Dim iRow As Long, i As Long
Dim arrayDati(1 To NumeroRate, 1 To 3) As Variant
iRow = ElencoNomi.ListIndex
With Frng
For i = 1 To NumeroRate
arrayDati(i, 1) = "Rata n. " & i
arrayDati(i, 2) = Format(Frng.Offset(iRow, i), "#,##0.00")
arrayDati(i, 3) = Format(Frng.Offset(iRow, i + NumeroRate + 1), "#,##0.00")
Next i
End With
RiepilogoDati.List = arrayDati
End Sub
'---
Prova a vedere se riesci ad adattare alle tue esigenze :-)