Deleting worksheets with looping

后端 未结 2 1339
萌比男神i
萌比男神i 2021-01-22 20:22

Could you tell me someone why just every second sheet is deleted, however if I turn off the worksheets.delete line than in the message box appears all the sheet names.



        
相关标签:
2条回答
  • 2021-01-22 21:13

    What happens is that when you delete a worksheet from the Worksheets collection, the next sheet takes the index of the one you just deleted. You then increment i, skipping the next sheet that you actually wanted to delete.

    The easiest solution is to delete worksheets beginning from the end.

    For i = ThisWorkbook.Worksheets.Count To 2 Step -1
        Application.Worksheets(i).Delete
    Next i
    
    0 讨论(0)
  • 2021-01-22 21:22

    Delete the sheet in reverse. Every time you delete a sheet, the Sheet index gets shifted.

    Sub tor()
        Dim wsz As Integer, i as Long
    
        wsz = ThisWorkbook.Worksheets.Count
    
        Application.DisplayAlerts = False
    
        For i = wsz To 2 Step -1
            ThisWorkbook.Worksheets(i).Delete
        Next i
    
        Application.DisplayAlerts = True
    End Sub
    
    0 讨论(0)
提交回复
热议问题