打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vba只保留指定名称的工作表其余表删除
userphoto

2024.01.18 广东

关注

vba想要保留指定名称的工作表多余的表则删除,也就是删除多个指定名称外的工作表,那首先要了解删除工作表的基础语句:

Sheets("工作表名").Delete

或Sheets(工作表序号).Delete

以上两种均可以删除当前工作簿,但要注意用工作表名时,工作表名必须用双引号括起来,用工作表序号则不用,以下是例子:

Sub 删除工作表()
	Sheets("sheet1").Delete   '删除工作表
	Sheets(1).Delete   '删除工作表
End Sub
而删除工作表有些excel版本会弹出警告框二次确认(如下图):

想要去除则要加入Application.displayalerts屏蔽警告框的出现:

Sub 删除工作表()
    Application.DisplayAlerts = False '屏蔽警告框的显示,一般放在开头
    'Sheets("sheet1").Delete   '删除工作表
    Sheets(1).Delete   '删除工作表
    Application.DisplayAlerts = True '恢复警告框的显示,一般放在结尾
    'False代表不显示,true代表恢复,两个应该成对出现
End Sub

一个指定名称的表的删除已经学会,那删除多个指定名称的表就简单了,可以加入For循环遍历工作表名再用If去判断是否是要删除的表名(代码解析详见我的文章【vba删除多个指定名称的工作表】),但是我们这篇文章要做的不是删除多个指定名称的表,而是删除多个指定名称的表以外的表,那就可以将“删除多个指定名称的工作表”的If代码反过来用,将不等于你指定的工作表名删除。比如以下代码删除“Sheet1”、“Sheet2”、“Sheet3”以外的工作表:

Sub 删除多个指定名称的表以外的表1()
    Application.DisplayAlerts = False '屏蔽警告框的显示,一般放在开头
    For icount = Sheets.Count To 1 Step -1 '倒序遍历所有工作表
        If Sheets(icount).Name <> "Sheet1" And Sheets(icount).Name <> "Sheet2" And Sheets(icount).Name <> "Sheet3" Then    '如果检测的表名均不等于设定的工作表
            Sheets(icount).Delete   '删除工作表
        End If
    Next
    Application.DisplayAlerts = True '恢复警告框的显示,一般放在结尾
    'False代表不显示,true代表恢复,两个应该成对出现
End Sub

以上代码已经基本能满足需求了,但是也可以继续优化,比如

【If Sheets(icount).Name <> "Sheet1" And Sheets(icount).Name <> "Sheet2" And Sheets(icount).Name <> "Sheet3" Then】If这段代码 ,一旦需要指定保留的表较多时,或者想要加入一些不一定会有的表时,这段就要拼接很多个and,代码会很长而且容易写错,想要优化的话,可以将要保留的工作表名放进一个数组中,遍历工作表序号时,将当前工作表序号对应的工作表名用match函数去判断是不是在数组中(match函数用法例子详见我的文章【VBA判断元素是否在数组中】),不在则可以删除:

Sub 删除多个指定名称的表以外的表2()
    Application.DisplayAlerts = False '屏蔽警告框的显示,一般放在开头
    arr = Array("Sheet1", "Sheet2", "Sheet3") '定义要保留的工作表名
    For icount = Sheets.Count To 1 Step -1 '遍历所有工作表
        a = Application.Match(Sheets(icount).Name, arr, 0) '检查当前工作表名是否在数组中
        If IsError(a) Then    '如果检测的表名不存在数组中
            Sheets(icount).Delete   '删除工作表
        End If
    Next
    Application.DisplayAlerts = True '恢复警告框的显示,一般放在结尾
    'False代表不显示,true代表恢复,两个应该成对出现
End Sub

这样写这段代码就可以形成模块,在需要删除别的工作表时,更改数组里的表名称即可。

以上内容对您有帮助可以分享或转藏,避免以后找不到。想要了解更多VBA相关知识,欢迎到http://moqingyan.360doc.com我的个人图书馆查看。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
新建工作表和删除指定工作表
Excel259个常用宏
VBA编程 新建和删除工作表
添加和删除工作表
第8讲 操作工作表
第二章、Excel工作薄和工作表操作
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服