你把工作表的顺序改为“高一”1、2、3、4、5、6、7、8、9、10,sheet1,你的代码就是可行的,但要考虑到万一工作表的顺序有改变,代码就失效,一般这样写:
Sub test()
On Error Resume Next
Application.DisplayAlerts = False
For Each gzb In Sheets
If Replace(gzb.Name, "高一", "") <= 9 Then gzb.Delete
Next gzb
Application.DisplayAlerts = True
End Sub
第一个程序为什么 不这么写:For x = 1 To 9
Sheets("高一" & x).Delete
Next
你原来的代码的问题是:
因为代码是将各工作表从左到右一个一个的传递给gzb变量的。当删除高一6时,正好有6个工作表,此时for在第6次循环中,即已经循环到最 后一个工作表了。完成删除后就会退出for循环,程序结束。而第二个代码的for循环只需要循环5次就能循环到9了,就可以删除高一9和高一10了,而此时的gzg是sheet1