sql 批量删除表_按指定条件批量删除工作表,一键搞定

大家好,我是星光,大宝天天见,今个咱又见~今给大家分享的VBA小代码是批量删除工作表

先说一下如何无条件的支持删除工作表,也就是删除全部工作表(仅保留不得不保留的最后一张工作表)。

代码如下:

Sub DelShet() '删除所有工作表    Dim sht As Worksheet    Application.ScreenUpdating = False '关屏幕刷新    Application.DisplayAlerts = False '关警告信息    On Error Resume Next    For Each sht In Worksheets        sht.Delete '遍历工作表删除    Next    Application.ScreenUpdating = True    Application.DisplayAlerts = TrueEnd Sub

然后再说一下如何有条件的删除工作表。

如下图所示,一个工作簿内包含了多张工作表,需要按你的任意规则对其删除其中一部分。

25f950fd8aee610e2e3827c55e50f785.png

1使用以下代码,将全部工作表的名称提取到当前工作表的A列

Sub GetShtByVba()    Dim sht As Worksheet, k As Long    Application.ScreenUpdating = False    k = 1    Range("a:b").Clear '清空数据    Range("a:a").NumberFormat = "@" '设置文本格式    For Each sht In Worksheets '遍历工作表取表名        k = k + 1        Cells(k, 1) = sht.Name    Next    Range("a1:b1") = Array("工作表名", "是否删除")    Application.ScreenUpdating = TrueEnd Sub

结果如下图所示。

f23797100aa7ae669e44322d31a31bb3.png

2,对需要删除的工作表,使用函数等方法,在B列标记“删除”。

c8ca775fdd45a9a44a108b66f66cbf86.png

3,复制运行以下代码,即可完成对B列标记“删除”的文件批量删除。

Sub DelShtByVba()    Dim sht As Worksheet, i As Long, r    Application.ScreenUpdating = False    Application.DisplayAlerts = False    On Error Resume Next    r = Range("a1").CurrentRegion '数据装入数组r    For i = 2 To UBound(r) '遍历并删除工作表        If r(i, 2) = "删除" Then Worksheets(CStr(r(i, 1))).Delete    Next    Application.ScreenUpdating = True    Application.DisplayAlerts = TrueEnd Sub

代码三五行,工作不用忙断肠,你也试一下吧~

如果你还不懂得如何运行VBA代码,可以参考:如何运行VBA代码?

依次点击菜单【进阶教程】→【VBA常用代码】可以获取更多实用VBA小代码。

小贴士:

代码会将隐藏的工作表也删除,但我们不可能将全部工作表删除,系统要求一个工作簿必须存在至少一张非隐藏的工作表。

图文作者:看见星光

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值