REGISTRATORE 2003 2010



  • REGISTRATORE 2003 / 2010
    di ERMES.MAZ data: 17/12/2014 06:21:57

    Ciao Ragazzi...

    nonostante siano stati effettuati gli stessi passi, ho notato il modo diverso di registrare del "registratore di macro" tra la versione di EXCEL 2003 e 2010.

    Con la registrazione 2003 (PRIMA MACRO), ciò che ha registrato funziona semza problimi su TUTTI I FOGLI del progetto.
    Con la registrazione 2010 (SECONDA MACRO), ciò che ha registrato funziona SOLO sul foglio dove ho registrato la macro e nel mio caso il 7.

    Sapete dirmi il perché di questa differenza? Non mi sembra un problema da poco per chi come me non ha gran dimestichezza del linguaggio...
     
    Sub ORD_ALF 2003()
    
    Range("AC17:AJ46").Select
        Selection.Copy
        Range("AN17:AU46").Select
        ActiveSheet.Paste
    
        Range("AC17").Select
        Range("AC17:AJ34").Sort Key1:=Range("AC17"), Order1:=xlAscending, Header:=xlNo _
            , OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
            Range("AC40:AJ46").Select
        Selection.Sort Key1:=Range("AC40"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    
        Range("AN17:AU46").Select
        Selection.Copy
        Range("AC17").Select
        ActiveSheet.Paste
        Range("AN17:AU46").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
        Range("AD13").Select
    
    End Sub
    
    Sub ORD_ALF 2010()
    
        Range("AC17:AJ46").Select
        Selection.Copy
        Range("AN17:AU46").Select
        ActiveSheet.Paste
        Range("AC17").Select
        Application.CutCopyMode = False
    
        ActiveWorkbook.Worksheets("7").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("7").Sort.SortFields.Add Key:=Range("AC17:AC34"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("7").Sort
            .SetRange Range("AC17:AJ34")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("AC40").Select
        ActiveWorkbook.Worksheets("7").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("7").Sort.SortFields.Add Key:=Range("AC40:AC46"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("7").Sort
            .SetRange Range("AC40:AJ46")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        
        Range("AN17:AU46").Select
        Selection.Copy
        Range("AC17").Select
        ActiveSheet.Paste
        Range("AN17:AU46").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
        Range("AD13").Select
    
    End Sub



  • di lepat (utente non iscritto) data: 17/12/2014 07:56:36

    la seconda macro fa esplicitamente riferimento al foglio 7 mentre la prima al foglio attivo.
    Il registratore serve per apprendere la sintassi dei comandi, ma poi occorre fare uno sforzo per capire, correggere e magari implementare.



  • di ERMES.MAZ data: 17/12/2014 09:50:12

    Indubbiamente è da imparare il linguaggio mah... Ciò che ho voluto evidenziare è la diversità di regiatrare gli stessi passaggi dalla versione 2003 alla 2010...

    Non è facile x chi è alle prime esperienze con le macro capire dove il registratore automatico sbaglia e non è altrettanto facile sapere come rimediare ai suoi errori