con Excel 2003 ero abituato a selezionare con una macro l'intervallo di celle che volevo ordinare e poi scrivere qualcosa del genere:
Ora, con la versione 2007, la faccenda è un po' cambiata, e la stessa operazione viene registrata più o meno così, nonostante io la registri utilizzando i riferimenti relativi:Rows("2:2").Select
Range("F2").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("k1") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Il problema è, come si può vedere, che la macro è piena di riferimenti sia al foglio che alla quantità di righe selezionate, ma non va bene perchè il loro numero può variare (il numero di righe selezionate indendo).Range("F2").Select
ActiveCell.Rows("1:1").EntireRow.Select
ActiveCell.Activate
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Statistiche").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Statistiche").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 2).Range("A1:A351"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Statistiche").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 10).Range("A1:A351"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Statistiche").Sort
.SetRange ActiveCell.Range("A1:BQ351")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Come si può adattare quindi questa macro per far si che ordini le righe selezionate indipendentemente dalla loro quantità e dal foglio in cui si trovano?
Grazie mille
__________________
Eliminati link pubblicitari
Anthony