Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Valore dell'ultima riga ai fini del ciclo FOR...NEXT

Ultimo Aggiornamento: 29/03/2020 17:43
Post: 6
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Junior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2020 16:23

Salve,
in giro ho trovato questa macro, che riesce ad ordinare le righe di valori numerici non ordinati, del tipo estrazioni lotto ecc.

Public Sub SortByString()
Dim row As Range
For Each row In Selection.Rows

row.Sort Key1:=row, Order1:=xlAscending, Orientation:=xlSortRows

Next row
End Sub

andrebbe bene, anzi VA bene, ma vorrei evitare il concetto di Selezione, la macro deve agire dalla prima all'ultima riga (non vuota), quale che essa sia.
Che istruzione/i bisognerebbe inserire per ottenere che "senza selezionare nulla", alla massima velocità e senza orpelli, il ciclo esegua qualcosa del tipo "for variabile dalla 1 alla ultima riga...." ?
A me basta che venga fatta salva l'istruzione dell'ordinamento (la quarta della macro.
Che disonore dover sempre chiedere, ma forse siamo qui per questo 😉
Grazie anticipate

LEO
https://t.me/LordBrum
Post: 2.610
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
29/03/2020 17:08

Ciao
a patto che non vi siano rihe/colonne vuote, ti posizioni sulla prima cella e:

Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
For Each Row In Selection.Rows
Row.Sort Key1:=Row, Order1:=xlAscending, Orientation:=xlSortRows
Next Row

saluti



Domenico
Win 10 - Excel 2016
Post: 6
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Junior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2020 17:25

ti ringrazio molto, funziona.
Ho provato anche senza posizionarmi, e non va, poi ho provato a posizionarmi su una riga qualsiasi e in effetti ordina le righe a valle ma non quelle a monte.
E' proprio necessario posizionarsi ?
comunque già così è ottimo risultato.
ciao

LEO
https://t.me/LordBrum
Post: 7
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Junior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2020 17:29

nel frattempo ho capito che mi basterebbe un comando select iniziale per auto posizionarmi alla prima riga, ma non lo so costruire, è chiaro che non conosco manco l'ABC del VBA.
Complimenti anche per la coetaneità

LEO
https://t.me/LordBrum
Post: 2.292
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
29/03/2020 17:31

ciao

bisogna sempre definire il range() su cui lavorare

Public Sub SortByStringRiga()
Dim row As Range
''For Each row In Selection.Rows
For Each row In Range("A1:J1")
row.Sort Key1:=row, Order1:=xlAscending, Orientation:=xlSortRows
Next row
End Sub

Public Sub SortByStringColonna()
Dim Col As Range
''For Each Col In Selection.Columns
For Each Col In Range("A1:A10")
Col.Sort Key1:=Col, Order1:=xlAscending, Orientation:=xlSortColumns
Next Col
End Sub

Ciao da locate
excel 2007 / 13
Post: 8
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Junior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2020 17:35

Trovato un comando:
Range("A1").End(xlUp).Offset(1, 0).Select
per autoposizionarmi sulla prima riga.
ora l'esecuzione è al top
Grazie ancora

LEO
https://t.me/LordBrum
Post: 9
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Junior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2020 17:43

acc, Varesino, ho risposto al buio per la soddisfazione di aver scovato il comando di posizionamento su riga 1, e non mi sono accorto del tuo intevento.
Te ne ringrazio e vado a provare anche la tua soluzione.
A tuttora la macro che ho è:

Public Sub SortByString()
Application.ScreenUpdating = False
Range("A1").End(xlUp).Offset(1, 0).Select
Application.ScreenUpdating = False
Dim row As Range
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
For Each row In Selection.Rows
row.Sort Key1:=row, Order1:=xlAscending, Orientation:=xlSortRows
Next row
Application.ScreenUpdating = True
Range("A65000").End(xlUp).Offset(1, 0).Select
End Sub

LEO
https://t.me/LordBrum
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 21:04. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com