如何用VBA删除名称匹配"M######"格式的所有工作表?
解决VBA删除特定格式工作表的问题
嘿,我明白你卡在哪了——你原来的代码用=来匹配工作表名称,这是精确匹配,只会删掉名字刚好是"M######"的工作表,而不是你要的那种以M开头、后面跟6位数字的表!
VBA里要识别通配符模式,得用Like关键字才行,刚好#就是用来匹配单个数字的通配符,完美符合你的需求。我给你修正后的代码,还加了关闭删除提示的设置,避免删表时不停弹确认框:
Sub DeleteMSheets() ' 关闭删除工作表的确认提示框 Application.DisplayAlerts = False Dim s As Worksheet ' 遍历工作簿里的所有工作表 For Each s In ActiveWorkbook.Sheets ' 判断工作表名称是否符合"M开头+6位数字"的格式 If s.Name Like "M######" Then s.Delete End If Next s ' 恢复提示框显示 Application.DisplayAlerts = True End Sub
几点小提醒:
- 运行代码前,确保工作簿里至少保留1个工作表(Excel不允许删除所有工作表),不然会报错
- 如果你不确定匹配规则对不对,可以先把
s.Delete改成MsgBox s.Name,先弹出符合条件的表名验证一下,没问题再改成删除操作
内容的提问来源于stack exchange,提问作者ERKSMTY
相关产品推荐
相关产品推荐

