| | Post: 2 | Registrato il: 08/03/2017
| Città: PIGLIO | Età: 37 | Utente Junior | 2013 | | OFFLINE | |
|
15/03/2017 10:07 | |
Buongiorno, avrei bisogno di una mano in quanto non sono per nulla esperto di vba.
Avrei bisogno di una macro che mi ordinasse in maniera crescente il testo delle celle che io di volta in volta seleziono (più righe e più colonne, con riferimento a due livelli, stesso procedimento che si ottiene con l'ordinamento personalizzato in pratica). Con il registratore di macro sono riuscito ad ottenere una cosa simile, il problema è che la macro ordina le celle facendo sempre riferimento ad un intervallo di 7 righe (perché 7 righe avevo selezionato al momento di far partire il registratore ed infatti nel codice c'è scritto A1:A7) anche quando io voglio ordinare ad esempio solo 5 righe...
In pratica vorrei che fossi io a decidere in base alla selezione le celle da ordinare, spero di essere stato chiaro.
Questo è il codice della macro che uso, si può aggiustare? :-)
Grazie per l'aiuto
Sub Ordina()
'
' Ordina Macro
'
' Scelta rapida da tastiera: CTRL+o
'
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Add Key:=ActiveCell. _
Range("A1:A7"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 1).Range("A1:A7"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dale").Sort
.SetRange ActiveCell.Range("A1:L7")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub |
|
| | Post: 947 | Registrato il: 04/02/2009
| Città: MILANO | Età: 64 | Utente Senior | 2000 - 2007 | | OFFLINE | |
|
15/03/2017 22:14 | |
Prova a modificare così:
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Add Key:=ActiveCell _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 1), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dale").Sort
.SetRange Cells.CurrentRegion
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ciao
pietrol pietrol
____________________________________
Win 10 Pro - Excel 2000 - 2007 -2016
Il lupo ululà, il castello ululì. |
| | Post: 2 | Registrato il: 08/03/2017
| Città: PIGLIO | Età: 37 | Utente Junior | 2013 | | OFFLINE | |
|
16/03/2017 19:49 | |
pietrol, 15/03/2017 22.14:
Prova a modificare così:
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Add Key:=ActiveCell _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Dale").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 1), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dale").Sort
.SetRange Cells.CurrentRegion
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ciao
pietrol
Grazie mille! |
|
|