Il codice che ti ho postato sopra risolve il tuo problema,e inoltre ti ordina sempre i dati.
la macro viene lanciata ogni volta che deattivi il foglio interessato,ritengo utile anche l'ordinamento di tutti i dati (puoi avere un ordine alfabetico di tutti gli atleti) che ti può facilitare la ricerca.
Puoi anche creare più intervalli con lo stesso metodo
- Codice: Seleziona tutto
Private Sub Worksheet_Deactivate()
Dim mioadd As String
mioadd = Sheets("Articoli").Range(Sheets("Articoli").Cells(2, 1), Sheets("Articoli").Cells(65536, 1).End(xlUp)).Address
ActiveWorkbook.Names.Add Name:="Codice", RefersTo:="=Articoli!" & mioadd
mioadd = Sheets("Articoli").Range(Sheets("Articoli").Cells(2, 2), Sheets("Articoli").Cells(65536, 2).End(xlUp)).Address
ActiveWorkbook.Names.Add Name:="Descrizione", RefersTo:="=Articoli!" & mioadd
Sheets("Articoli").Range("A1").Sort Key1:=Sheets("Articoli").Range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
per esempio con questo codice crei l'intervallo "Codice" e Descrizione" nel foglio Articoli è molto pratico associarlo a dei combo citando solo l'intervallo per cui ampia possibilità di manovra con eventuali evoluzioni del programma che stai facendo
Per risolvere il tutto avevo pensato che ogni volta viene aggiunto un atleta, alla fine della macro che inserisce il nuovo atleta nel database vi fosse il codice per ridefinire, appunto, l'intervallo al quale fa riferimento la convalida elenco (dbat0 appunto).
basta che cambi la chiamata cioè
Private Sub Worksheet_Deactivate()
con "Macro 1" e alla fine della macro che ti modifica/inserisce i dati di un atleta la richiami
ciao