Macro ordinamento personalizzato

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
Riccardo.Samba
00mercoledì 15 marzo 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
pietrol
00mercoledì 15 marzo 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
Riccardo.Samba
00giovedì 16 marzo 2017 19:49
Re:
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!
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 23:10.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com