VBA学习(9):按指定名单一键删除工作表

今天继续给大家聊VBA编程中工作表对象的常用操作,主要内容是如何批量删除工作表;也就是删除单个工作表、删除全部工作表和删除指定名单内的工作表。

1.删除单个工作表

删除工作表需要使用到工作表对象的delete方法,语法格式如下:

工作表对象.delete

举个例子,以下代码可以删除当前工作簿的首个工作表。

Sub DelSht()Application.DisplayAlerts = FalseWorksheets(1).DeleteApplication.DisplayAlerts = True
End Sub

删除工作表的动作,会引发系统会弹出一个消息框

图片

第2行代码的作用就是屏蔽此类系统显示的警告和消息,避免程序运行被打断

第4行代码恢复系统显示警告消息的功能。

2.删除全部工作表

以下代码可以删除当前工作簿"全部"的工作表

Sub DelShtAll()Dim sht As WorksheetApplication.DisplayAlerts = FalseFor Each sht In Sheets '集合遍历If sht.Name <> ActiveSheet.Name Thensht.Delete '如果sht的名字不等于当前工作表则删除End IfNextApplication.DisplayAlerts = True
End Sub

代码采用集合遍历的方式遍历当前工作簿每一张工作表,如果该工作表不是当前工作表则删除。代码运行后,工作簿就只剩下当前工作表孤零零一个人了。

打个响指,需要说明两点,一个是系统要求工作簿必须存在至少一张可见工作表,因此我们并不能将全部工作表都解雇,上述代码选择了保留当前工作表

图片

另外,删除这个动作是无视工作表是否隐藏的,即便工作表隐藏不可见,也一样会被删掉

3.删除指定名单工作表

如下图所示,需要根据A2:B9单元格区域所提供的名单将相关工作表全部删除。

图片

示例代码如下:

Sub DelShtByCustom()Dim sht As Worksheet, rngData As Range, c As RangeDim d As Object, y As LongDim strName As String, strErr As StringIf ActiveWorkbook.ProtectStructure = True ThenMsgBox "工作簿有保护,需要先撤销保护再运行代码"Exit SubEnd IfOn Error Resume Next '使程序忽略错误继续运行Set rngData = Application.InputBox("请选择需要删除的工作表名单区域", _Title:="公众号Excel星球", _Default:=Selection.Address, _Type:=8)Set rngData = Intersect(rngData, rngData.Parent.UsedRange)If rngData Is Nothing ThenMsgBox "未选择有效数据区域。"Exit SubEnd IfSet d = CreateObject("scripting.dictionary") '后期字典For Each sht In Sheets '遍历工作表名存入字典strName = sht.Named(strName) = ""NextWith Application '取消屏幕刷新、信息警告等.ScreenUpdating = False.DisplayAlerts = False.Calculation = xlCalculationManualEnd WithFor Each c In rngData '遍历名单区域strName = c.ValueIf Len(strName) Then '如果名字非空If d.exists(strName) Then '如果字典中存在删除表名If Sheets.Count > 1 Then '判断工作表个数是否可删Sheets(strName).Delete '删除工作表y = y + 1 '累加个数ElseMsgBox "系统要求工作表必须保留至少一张,因此" & _strName & "未能删除。"End IfElse '如果不存在删除表名strErr = strErr & "," & strName '合并不存在的表名End IfEnd IfNextWith Application '恢复屏幕刷新、信息警告等.ScreenUpdating = True.DisplayAlerts = True.Calculation = xlCalculationAutomaticEnd WithIf strErr <> "" ThenMsgBox "以下名称工作簿中不存在工作表,未能删除:" & vbCrLf _& Mid(strErr, 2)ElseMsgBox "处理完成。"End IfSet d = Nothing
End Sub

代码详细解释见注释,概要总结如下:

第5至第8行代码判断工作簿是否有保护,工作簿结构保护状态下,工作表是不被允许开除的,违法行为知道吧?

第9行代码使程序忽视错误继续运行。

第10至第18行代码使用Application.InputBox语句允许户选择删除名单的区域,并判断该区域是否有效。

第19至第23行代码将当前工作簿现有工作表的名字存入字典。

第24至第28行代码取消屏幕刷新、警告消息框、公式重算等。

第29至第44行代码遍历名单数据,第32行代码判断字典中是否存在需要删除的表名,如果存在,则删除,否则使用变量strErr记录未能删除的名单。

第45至第49行代码恢复屏幕刷新、警告消息框、公式重算等。

第50至第55行代码使用Msgbox语句显示处理结果相关信息。

技术交流,软件开发,欢迎加微信xwlink1996 


作者其他作品:

VBA实战(Excel)(1):提升运行速度

Ribbon第一节:控件大全

HTML实战(1):新建一个HTML

VB.net实战(VSTO):Excel插件的安装与卸载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚类分析 #数据挖掘 #Python

聚类分析&#xff08;Cluster Analysis&#xff09;是一种无监督机器学习方法&#xff0c;主要用于数据挖掘和数据分析中&#xff0c;它的目标是将一组对象或观测值根据它们之间的相似性或相关性自动分组&#xff0c;形成不同的簇或类别。聚类分析并不预先知道每个观测值的具体…

可燃气体报警器:户外工地安全预警先锋,定期检定保障安全无忧

在现代化的建设进程中&#xff0c;户外工地作为城市发展的重要推动力&#xff0c;其安全问题一直备受关注。 工地现场往往涉及多种易燃易爆气体&#xff0c;一旦发生泄漏&#xff0c;后果不堪设想。因此&#xff0c;如何有效预警并防范可燃气体泄露&#xff0c;成为户外工地安…

新手小白从Windows转Linux,或许manjaro更适合你!

网管小贾 / sysadm.cc 野生动物园里有一块并不怎么大的水塘&#xff0c;一群火烈鸟就生活在这里。 它们在水塘里悠闲地漫步&#xff0c;饿了就找些小鱼小虾&#xff0c;困了就伸个懒腰、打个盹。 就这样日复一日&#xff0c;过着百无聊赖的日子&#xff0c;直到有一天…… 这…

easyexcel和poi版本冲突报错深入解析v2

easyexcel报错解决 问题 项目由poi改用easyexcel&#xff0c;报错如下&#xff1a; java.lang.NoSuchMethodError: ‘org.apache.poi.ss.usermodel.CellType org.apache.poi.ss.usermodel.Cell.getCellType()’ 原因 easyexcel中的poi和项目原本的poi版本冲突问题。 由于之前做…

数据结构---排序算法

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

数据中心机房建设标准

数据中心机房是专门设计用于存放、管理和维护计算机服务器、网络设备、存储设备以及其他IT基础设施的物理空间。它们是信息化社会的基石&#xff0c;为各种在线服务提供硬件和网络支持。数据中心机房的主要功能包括数据存储、处理、传输以及提供计算资源。 数据中心机房建设涉及…

用python绘制三维条形图

用python绘制三维条形图 三维条形图特点与用途 效果代码 三维条形图 三维条形图是一种在三维空间中表示数据的方法&#xff0c;它通过垂直或水平的条形长度来显示类别之间的差异。与传统的二维条形图相比&#xff0c;三维条形图增加了深度或高度的维度&#xff0c;使得数据可视…

数理化解题研究杂志社数理化解题研究编辑部2024年第12期目录

教学设计与教学策略研究 聚焦数学思想 贯彻核心素养——以“函数的奇偶性”的教学设计为例 宋方宁;李硕; 2-4 高中数学课堂案例研究——探讨“教-学-评”一体化模式的应用 赖琰媛;曹小燕; 5-7 漫谈体验式教学在高中数学教学中的运用策略 林素珍; 15-17《数理化解题…

洁盟超声波清洗机怎么样?2024爆款机型声波清洗机测评、一篇看懂

随着现在近视率的逐年上升&#xff0c;戴眼镜的人群越来越多&#xff01;当然他们也在面临着一个眼镜清洗的问题&#xff01;因为长期佩戴眼镜&#xff0c;镜框还有镜片上面都是会积累灰尘、油污、污垢以及细菌&#xff0c;脏脏的不仅令眼镜不美观&#xff0c;同时在长期的佩戴…

【嵌入式】SD NAND:SD卡的集成与优化

嵌入式SD卡&#xff0c;也称为SD NAND或贴片式SD卡&#xff0c;是一种专为空间受限的设备设计的存储解决方案。这种存储卡与传统的SD卡不同&#xff0c;它采用贴片式封装&#xff0c;可以直接焊接到设备的PCB上&#xff0c;从而为电子设备提供内置存储功能。以下是嵌入式SD卡的…

简单介绍vim

文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置&#xff1a;编辑配置文件&#xff1a;添加配置选项&#xff1a;保存并退出编辑器&#xff1a;快速配置验证设置&#xff1a; 总结 前言 Vim是一款强大的文本编辑器&#xff0c;被广泛用于各种编程和文本编辑任…

canvas实现画布拖拽效果 适配Uniapp和Vue (开箱即用)

需求:我司是做AIGC项目最近和地铁项目有关需要实现海报效果图&#xff0c;并且需要使用画布拖拽和修改上传删除等等功能 当时连续加班花了10个工作日搓出来 实现挺简单的但是Canvas数据处理还是挺麻烦的 大概功能如图下 首先我们需要引入Fabric.js 这个库封装好了原生的Canva…

C#唯一进程的处理Winform/WPF

C#唯一进程的处理 1.使用进程&#xff08;Process&#xff09;判断winformWPF执行效果&#xff1a; 2.使用互斥体&#xff08;Metux&#xff09;实现winformWPF实现效果&#xff1a; 在C#客户端&#xff08;Winform/WPF&#xff09;开发过程中&#xff0c;有的情况需要确保程序…

三分钟搞懂AI Agent是什么!

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

mindmapper17软件最新版下载-MindMapper17(思维导图软件)下载附加详细安装步骤

​​MindMapper​​​是一款专业的可视化思维导图软件&#xff0c;通过智能绘图方法&#xff0c;在管理信息和处理工作流程中&#xff0c;帮助提高组织、审查、合作、分享和交流能力。《思维导图三招十八式》作者也一直力荐 MindMapper这款软件。思维导图是表达发射性思维的有效…

《详解》如何在ROS中建立MQTT通信

观前提醒&#xff1a;本期主要内容为ROS中MQTT通信节点的编程&#xff0c;和ROS部分底层通信机制的浅析 一、复习一下&#xff1a;ROS通信机制&MQTT通信异同点 ROS通信机制概述 ROS中的主要通信机制有以下几种&#xff1a; 话题 (Topics) 发布/订阅模型&#xff08;Pu…

Android 断点续传基础之单线程下载

**遇到的问题&#xff1a;**在这因为返回值的问题烦躁了一下&#xff0c;有可能出现空指针的异常&#xff0c;已经提出成文章了 请参考http://blog.csdn.net/qq_27489007/article/details/53523378 文件关系图 断点续传流程图 开始撸代码(主要代码) /** 普通断点续传 */ …

AI 生成文本工具推荐(AI 对话/AI 聊天机器人/AI 写作)

① boardmix AI boardmix AI&#xff0c;是一个在线的智能 AI 对话 App&#xff0c;打开浏览器即可在线使用&#xff0c;支持 AI 多轮连续对话&#xff0c;提供 AI 角色切换、AI 多语言翻译、一键唤出、可视化表达及多人协作功能。 boardmix AI 预置了多个不同的 AI 角色&…

⭐Unity 控制任意UI的渐隐渐显

使用脚本之前先给要控制的UI加上CanvasGroup组件 解释: 这个脚本使用协程来逐渐改变CanvasGroup的alpha值&#xff0c;从而实现渐隐和渐显的效果。 Mathf.Lerp函数用于在指定的时间内平滑地从当前透明度过渡到目标透明度。 通过调用FadeIn和FadeOut方法&#xff0c;你可以在任…