1、如果通过for i = 1 to worksheets.count 的方式来遍历sheet,然后通过worksheets(i).delete这种方式来找到并删除sheet,运行时可能会报错超出范围。这是因为通过sheet的编号来遍历,又在循环体中使用编号引用到sheet来删除,容易造成i超出删除后的count。
2、正确方法是通过For Each ws In Worksheets的方式来遍历,然后通过ws.Delete的方式来删除。
3、示例:Sub test()Application.Di衡痕贤伎splayAlerts = FalseFor Each ws In Workshe髫潋啜缅etsIf CDate(ws.Name) < Date - 30 Then ws.DeleteEnd IfNextApplication.DisplayAlerts = TrueEnd Sub