ordinare dati in una colonna con macro

Anonimo
2015-12-30T18:31:10+00:00

salve,

ho registrato una macro che ordina (a --> z) i dati in una colonna (tabella excel formata da una solo colonna).

Era mia intenzione ordinare i dati  all' uscita/abbandono del foglio e per tale motivo ho inserito la macro nell' evento "deactivate" ma ho errore runtime 1004 (errore nel metodo select per la classe range).

Se invece collego la macro all' evento activate del foglio in questione le cose funzionano senza problemi (ma vorrei che funzionasse all' uscita del foglio se possibile).

Avete suggerimenti

grazie

MF

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-12-30T21:34:35+00:00

Nel modulo di codice del foglio (qui ordino da A1 a A7 con intestazione colonna):

Private Sub Worksheet_Deactivate()

    Call m

End Sub

Private Sub m()

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh.Sort

        .SortFields.Clear

        .SortFields.Add Key:=Range("A2:A8") _

        , SortOn:=xlSortOnValues, _

        Order:=xlAscending, _

        DataOption:=xlSortNormal

        .SetRange Range("A1:A8")

        .Header = xlYes

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

    Set sh = Nothing

End Sub

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-12-31T08:54:12+00:00

    Ovviamente il mio esempio era su una tabella che avevo sul foglio.

    A quale tipo di tabella ti riferisci? A una semplice tabella o a *quell'orrenda* cosa che permette di trasformare una tabella in una tabella di Excel?

    Nel primo caso puoi trovare *il fondo* della tabella e utilizzare la variabile per definire la dimensione della tabella (in grassetto le parti aggiunte):

    Private Sub m()

         Dim sh As Worksheet

         Dim lRiga As Long

         Set sh = ThisWorkbook.Worksheets("Foglio1")

         lRiga = sh.Range("A" & Rows.Count).End(xlUp).Row

         With sh.Sort

             .SortFields.Clear

             .SortFields.Add Key:=Range("A1:A" & lRiga) _

             , SortOn:=xlSortOnValues, _

             Order:=xlAscending, _

             DataOption:=xlSortNormal

             .SetRange Range("A1:A" & lRiga)

             .Header = xlYes

             .MatchCase = False

             .Orientation = xlTopToBottom

             .SortMethod = xlPinYin

             .Apply

         End With

         Set sh = Nothing

     End Sub

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-12-31T14:00:47+00:00

    Non ho capito cosa intendi per "quell'orrenda cosa" che trasforma una tabella in una tabellla excel!

    Niente. In Excel con le ultime versioni puoi trasformare una semplice tabella in una *tabella di Excel*.

    • Fai una semplice tabella in un foglio
    • Click su una delle celle
    • Scheda Inserisci
    • Seleziona Tabella
    • Conferma con Ok nella finestra che compare

    Per tornare alla tabella standard:

    • Seleziona una cella della tabella
    • Click con il tasto dx del mouse
    • Seleziona Tabella-->Converti in intervallo
    • Seleziona Si nella finestra che compare

    Personalmente non amo molto questo nuovo tipo di tabelle.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-12-31T13:12:53+00:00

    Mauro, funziona tutto al 100%!

    Grazie mille per la soluzione definitiva!

    Non ho capito cosa intendi per "quell'orrenda cosa" che trasforma una tabella in una tabellla excel!

    Io ho semplicemte utilizzato in una cella dei  darti (che sono in un foglio su un' unica colonna) -trattasi di un elenco di banche con le coordinate bancarie) la combinatione tasti  CTRl +T : ho forse sbagliato qualcosa!?

    Saluti e di nuovo buon 2016!

    MF

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-12-31T08:33:09+00:00

    Salve,

    il codice che mi ha postato funziona perfettamente però ho messo come range ("A1:A8") per comprendere nell' ordinamento anche la seconda riga di dati (se metto A2:A8 l'ordinamento va  dalla terza all'ottava riga).

    Poi,  visto che i dati sono in una tabella di excel (Tabella2 del foglio BANCHE) ho sostituito range ("A1:A8") con

    Range("Tabella2[BANCHE]") e vedo che funziona ma ho il problema della seconda riga che non rientra nell' ordinamento!

    Ringrazio per l'interessamento e x la soluzione proposta!

    buon anno nuovo! auguri

    MF

    La risposta è stata utile?

    0 commenti Nessun commento