Macro che funziona solo su alcuni fogli

Anonimo
2012-11-10T19:18:53+00:00

Ciao a tutti,

Utilizzo il seguente codice per ordinare le righe solo per alcuni fogli. 

Public Sub Ordina()

    Application.ScreenUpdating = False

    With ActiveSheet

.Unprotect Password:=""

.Range("A6").Select

.Sort.SortFields.Clear

.Sort.SortFields.Add Key:=Range("A6:A50") _

, SortOn:=xlSortOnValues, _

Order:=xlAscending, _

DataOption:=xlSortNormal

With .Sort

   .SetRange Range("A5:K50")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Application.ScreenUpdating = True

.Protect Password:=""

    End With

End Sub

Visto che ho messo il pulsante per eseguire il codice nella barra di accesso rapido, involontariamente mi è capitato di eseguire la macro su alcuni fogli che non andava fatto. È possibile isolare l’esecuzione del codice solo per alcuni fogli? Grazie

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
2012-11-11T08:21:21+00:00

Anche se non l'hai testata carissimo Mauro funziona benissimo. Si potrebbe aggiungere un msg che indichi nel caso la macro venisse eseguita su un foglio escluso da Case Is = "Foglio1", "Foglio3", "Foglio6"  "Il foglio è esluso da Ordina righe".

Ecco qui:

Public Sub Ordina()

     Application.ScreenUpdating = False

    With ActiveSheet

         Select Case .Name

             Case Is = "Foglio1", "Foglio3", "Foglio6"

                 .Unprotect Password:=""

                 .Range("A6").Select

                 .Sort.SortFields.Clear

                 .Sort.SortFields.Add Key:=Range("A6:A50") _

                 , SortOn:=xlSortOnValues, _

                 Order:=xlAscending, _

                 DataOption:=xlSortNormal

                 With .Sort

                     .SetRange Range("A5:K50")

                     .Header = xlYes

                     .MatchCase = False

                     .Orientation = xlTopToBottom

                     .SortMethod = xlPinYin

                     .Apply

                 End With

            Case Else

                MsgBox "Foglio non valido"

         End Select

         Application.ScreenUpdating = True

         .Protect Password:=""

     End With

 End Sub

Modifica il testo della MsgBox a tuo piacimento.

Buona domenica.

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-11-11T15:33:22+00:00

    Grazie Mauro testata e modificata a mio piacimento. Sei stato gentilissimo e hai reso un servizio molto, molto utile.

    Bene!

    Sempre qui se hai bisogno.

    Ciao e alla prossima.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-11-11T10:35:43+00:00

    Grazie Mauro testata e modificata a mio piacimento. Sei stato gentilissimo e hai reso un servizio molto, molto utile.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-11-11T08:03:05+00:00

    Anche se non l'hai testata carissimo Mauro funziona benissimo. Si potrebbe aggiungere un msg che indichi nel caso la macro venisse eseguita su un foglio escluso da Case Is = "Foglio1", "Foglio3", "Foglio6"  "Il foglio è esluso da Ordina righe".

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-11-11T00:27:40+00:00

    Ciao a tutti,

    Utilizzo il seguente codice per ordinare le righe solo per alcuni fogli. 

    <cut>

    Visto che ho messo il pulsante per eseguire il codice nella barra di accesso rapido, involontariamente mi è capitato di eseguire la macro su alcuni fogli che non andava fatto. È possibile isolare l’esecuzione del codice solo per alcuni fogli? Grazie

    Prova :

    Public Sub Ordina()

        Application.ScreenUpdating = False

        With ActiveSheet

            Select Case .Name

                Case Is = "Foglio1", "Foglio3", "Foglio6"

                    .Unprotect Password:=""

                    .Range("A6").Select

                    .Sort.SortFields.Clear

                    .Sort.SortFields.Add Key:=Range("A6:A50") _

                        , SortOn:=xlSortOnValues, _

                        Order:=xlAscending, _

                        DataOption:=xlSortNormal

                    With .Sort

                        .SetRange Range("A5:K50")

                        .Header = xlYes

                        .MatchCase = False

                        .Orientation = xlTopToBottom

                        .SortMethod = xlPinYin

                        .Apply

                    End With

            End Select

            Application.ScreenUpdating = True

            .Protect Password:=""

        End With

    End Sub

    Qui solo per Foglio1, Foglio3, Foglio6. Modifica e/o aggiungi i nomi dei tuoi foglio qui:

    Case Is = "Foglio1", "Foglio3", "Foglio6"

    Scritta direttamente qui e non testata.

    La risposta è stata utile?

    0 commenti Nessun commento