Loop attraverso Fogli Excel

Ho il seguente Codice e vorrei eseguirlo in 25 altri fogli della Cartella di lavoro e, invece di ripetere il codice di 25 volte,per ogni foglio c’è un modo per rendere loop?

Qualcuno può aiutare?

Sub DeleteEmptyRows()
Dim ws As Worksheet
Dim strSearch As String
Dim lRow As Long

strSearch = "ressort"

Set ws = Sheets("01,02,03")

With ws
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row




    With .Range("A1:A" & lRow)
      .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
      .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

   ActiveSheet.Range("$A$1:$P$65536").AutoFilter Field:=1

End With
End Sub
InformationsquelleAutor adp | 2013-12-06

 

2 Replies
  1. 11

    Avvolgere il codice di elaborazione in un ciclo

    for each ws in thisworkbook.sheets
        ' do something on each worksheet
    next

    esempio

    Sub DeleteEmptyRows()
        Dim ws As Worksheet
        Dim strSearch As String
        Dim lRow As Long
    
        strSearch = "ressort"
    
        For Each ws In ThisWorkbook.Sheets
            If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet3") Then
                With ws
                lRow = .Range("A" & .Rows.Count).End(xlUp).Row
                    With .Range("A1:A" & lRow)
                      .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
                      .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
                    End With
                    ws.Range("$A$1:$P$65536").AutoFilter Field:=1
                End With
            End If
        Next
    End Sub

    così, ora, se i nomi dei fogli sono Foglio1 o o Foglio3 Foglio2 essi verranno ignorati.

    • Posso aggiungere un’eccezione ? Ho 3 fogli che non si desidera che la macro per l’esecuzione.
    • sicuro che mi permetta di regolare velocemente la risposta
  2. 1

    Il codice deve essere memorizzato in un modulo, piuttosto che essere contenuta in un foglio. I seguenti illusrates come il loop funziona:

    Sub test()
    
    Dim thisSheet As Worksheet
    For Each sheet In Sheets
        thisSheet.Cells(1, 1) = 1
    Next
    
    
    End Sub
    • Ehi, posso ignorare altri fogli? Ho 3 fogli che non voglio la sua esecuzione.
    • Sì – è possibile utilizzare thisSheet.Nome in codice o thisSheet.Nome per ottenere il nome del foglio (attenzione, i due nomi potrebbero essere diversi). Una volta che hai il nome del foglio è possibile utilizzare un’istruzione if per filtrare i tre fogli non vuoi farlo per l’esecuzione.

Lascia un commento