Я создал макрос, который вызывает другой макрос, который затем запускается на каждом листе из листа 4. Макрос выполняется на первом листе (лист 4), но затем не запускается на всех остальных листах.
Исходный макрос, который должен пройти по всем рабочим листам, начиная с рабочего листа 4:
Sub DeleteLoop()
Dim WS_Count As Integer
Dim i As Integer
If MsgBox("Do you want to continue", vbYesNo, "User Input") = vbNo Then
Exit Sub
Else
If MsgBox("Are you sure? Have you taken a backup of your spreadsheet?", vbYesNo, "User Input") = vbNo Then
Exit Sub
Else
ActiveWorkbook.Worksheets(4).Activate
For i = ActiveSheet.Index To Sheets.Count
Call DeleteMacro
MsgBox "I'm currently on sheet " & ThisWorkbook.Sheets(i).Name
Next i
End If
End If
End Sub
Макрос для запуска на каждом листе выглядит следующим образом:
Sub DeleteMacro()
Dim x As Integer
Dim y As Integer
Call UnProtectSheet
Range("F12").AutoFilter Field:=6, Criteria1:=Array("Paid", "Cancelled", " "), Operator:=xlFilterValues
y = Cells.Item(3, "L")
x = Cells.Item(8, "E")
If x > 0 Then
Application.Goto Reference:="R12C1"
Call NextVisibleRow
If y > 1 Then
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
Else
Selection.EntireRow.Delete
End If
End If
ActiveSheet.ShowAllData
Application.Goto Reference:="R12C1"
Call NextVisibleRow
Selection.End(xlDown).Select
If ActiveCell.Value = "Balance" Then
Selection.End(xlUp).Select
End If
Call NextVisibleRow
Call ProtectSheet
End Sub
Можете ли вы сообщить мне, что я делаю неправильно, что препятствует запуску макроса на каждом листе от листа 4 до последнего листа.