Re: elenco squadre
+aurelio+, 01/12/2007 17.42:
[cut]
Quindi, mugiu, prendi nota che Mario lo farà. In fondo di fronte a un problema é come un Pittsbull.. non lo molla. Mario non volevo darti della bestia... intesi? di questi periodi ci si può cascare...
[cut]
...Va bene la ricerca (e sono curioso di sapere cosa propone Mario) x un esercizio di ricerca di possibilità che apre ad altre applicazioni ed esperienze. Ma non va assolutamente bene come vizietto operativo. Ci si rovina l'anima e la giornata. Ci sono cascato diverse volte e per questo lo posso dire. Insomma il Santo non vale la candela ma vale di + di una cattedrale solo x i motivi che ho detto. xciò Mario ti aspettiamo...
[cut]
Simpaticamente pungolato (ciao Aurè), eccomi con la soluzione (che suppongo potrà essere oggetto di una richiesta di "ampliamento"...me lo sento).
codice da inserire nel modulo di foglio1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, x, riga As Long
riga = Cells(Rows.Count, 1).End(xlUp).Row
' selezionando la cella B1 definisce il range di "elenco"
If Target.Address = "$B$1" Then
ActiveWorkbook.Names.Add Name:="elenco", RefersToR1C1:= _
"=Foglio1!R1C1:R" & riga & "C1"
End If
' selezionando la cella C1 crea e definisce "elenco2"
If Target.Address = "$C$1" Then
i = 0
x = 0
Columns("IV:IV").ClearContents
ActiveWorkbook.Names.Add Name:="elenco2", RefersToR1C1:= _
"=Foglio1!R1C256:R" & riga - 1 & "C256"
For i = 1 To riga
Cells(i - x, 256) = Cells(i, 1)
If Cells(i, 1) = Cells(1, 2) Then x = x + 1
Next i
End If
End Sub
Breve descrizione:
Le celle B1 e C1 sono celle attive, nel senso che quando vengono selezionate attivano l'esecuzione del codice;
ogni volta che si crea l'elenco in colonna A, indipendentemente da quanti sono i valori, non bisogna settare il range da assegnare al nome "elenco", lo fa automaticamente ogni volta che si seleziona la cella B1 o la C1;
a seguire, la macro, cancella i dati in colonna IV (usata come appoggio per la creazione di "elenco2") dopodichè setta il range del nome “elenco2” (in base alla lunghezza di "elenco" meno 1), poi, con un ciclo For Next, popola il range con i valori di colonna A meno il valore in cella B1.
Aprendo successivamente l’elenco a discesa di cella C1 si potranno vedere tutti i valori di colonna A meno appunto quello di B1.
Credo di aver detto tutto quanto era possibile.
Un saluto a tutti
Mario