Macro foglio protetto

Anonimo
2015-02-11T11:07:56+00:00

Buongiorno.

Ho questa macro che però non mi funziona se il foglio è protetto.

Come posso modificarla perché funzioni anche in un foglio protetto?

Grazie a chi vorrà gentilmente aiutarmi,

Giuseppe

Sub Trim01()

'    Range("B4:B81").Select

    Selection.AutoFilter

    Range("B4:B81").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _

        "J4:J81"), CopyToRange:=Range("J4:J81"), Unique:=True

    Range("J4:J81").Select

    ActiveWorkbook.Worksheets("Trim01").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Trim01").Sort.SortFields.Add Key:=Range("J4"), _

        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("Trim01").Sort

        .SetRange Range("J4:J81")

        .Header = xlNo

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    Range("B4").Select

    End With

End Sub

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-02-11T11:22:50+00:00

Ciao Giuseppe, 

Prova qualcosa del genere:

'=========>>

Option Explicit

'--------->>

Public Sub Trim01()

Const PWord As String = "Pippo"                                             '<<==== Modifica

ActiveSheet.Unprotect Password:=PWord

    '    Range("B4:B81").Select

    Selection.AutoFilter

    Range("B4:B81").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _

                                                                        "J4:J81"), CopyToRange:=Range("J4:J81"), Unique:=True

    Range("J4:J81").Select

    ActiveWorkbook.Worksheets("Trim01").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Trim01").Sort.SortFields.Add Key:=Range("J4"), _

                                                            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("Trim01").Sort

        .SetRange Range("J4:J81")

        .Header = xlNo

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

        Range("B4").Select

    End With

ActiveSheet.Protect DrawingObjects:=True, _

Contents:=True, _

Password:=PWord

End Sub

'<<---------

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-02-11T22:07:52+00:00

    Ciao Giuseppe.

    Grazie infinite del tuo codice. L'ho testato e risolve benissimo il mio problema.

    Ti ringrazio per il gentile riscontro.

    Ho notato che hai disattivato 

    '    Range("B4:B81").Select

    se capisco bene è solo perché ridondante oppure c'è un altro motivo?

    Infatti, credo questa riga sia stata gia` disattivata nel codice che hai postato tu!

    Detto questo, normalmente è né necessario o desiderabile di selezionare gli oggetti. Forse, potresti sostituire questa riga e la seguente riga con:

           Range("B4:B81").AutoFilter

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-02-11T16:50:01+00:00

    Ciao Norman,

    Grazie infinite del tuo codice. L'ho testato e risolve benissimo il mio problema.

    Ho notato che hai disattivato

    '    Range("B4:B81").Select

    se capisco bene è solo perché ridondante oppure c'è un altro motivo?

    Cordialmente,

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento