【分享成果,随喜正能量】一个内心真正强大的人,不是征服了什么,而是能够承受什么。内心强大的人,往往自带光芒。众人以顺境为乐,而君子乐自逆境中来,直面困境,战胜心底的恐惧,尽人事听天命。一个人的涵养,不在心平气和时,而是心浮气燥时;一个人的理性,不在风平浪静时,而是众声喧哗时;一个人的慈悲,不在居高临下时,而是人微言轻时;情侣间的尊重,不是闲情逸致时,而是观点相左时;夫妻间的恩爱,不在花前月下时,而是大难临头时!

《VBA代码解决方案》这套教程是我最早推出的教程,目前已经是第二版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一下把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过度教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是第20讲:工作表对象的添加与删除处理

从工作簿中删除工作表(工作表对象的添加与删除处理)(1)

第二十讲 EXCEL工作表的添加与删除

大家好,今天继续讲解VBA代码解决方案,今日的内容是第20讲,EXCEL工作表的添加与删除。在工作簿中添加工作表使用Add方法,Add 方法应用于Sheets和Worksheets对象时新建工作表、图表或宏表。

语法:expression.Add(Before, After, Count, Type)

参数

a) Before是可选的,指定工作表对象,新建的工作表将置于此工作表之前。

b) After是可选的,指定工作表对象,新建的工作表将置于此工作表之后。

如果Before和 After两者均省略,则新建的工作表将插入到活动工作表之前

c) Count可选,要新建的工作表的数目。默认值为 1。

d) Type可选,指定新建的工作表类型。

1 利用Add方法增加一个工作表的通用代码

如果增加一个工作表,可以参考下面的通用代码:

Sub mynz_20_1()

Dim Sh As Worksheet

With Worksheets

Set Sh = .Add(after:=Worksheets(.Count))

Sh.Name = "MY"

End With

End Sub

代码解析:MyAddsh过程使用Add方法在工作簿中新建“MY”工作表。

a) 第2行代码声明变量Sh为工作表对象。

b) 第4行行代码使用Add方法在工作簿的最后新建一个工作表。

c) 第5行代码将添加的工作表重命名为“MY”。

2 批量添加工作表的代码

如果需要在工作簿中批量添加工作表,可以使用下面的代码。

Sub mynz_20_2()

Dim i As Integer

Dim sh As Worksheet

For i = 101 To 102

Set sh = Sheets.Add(after:=Sheets(Sheets.Count))

sh.Name = i

Next

End Sub

代码解析:

MyAddsh_2过程使用For...Next 语句和Add方法在工作簿中添加8张工作表并将添加的工作表依次重命名。

3 Delete方法删除工作表

使用Delete方法可以删除工作表,应用于工作表对象的Delete方法删除指定的对象。

语法如下:expression.Delete

参数expression是必需的。

在删除工作表时会有一个系统提示,在必要的时候要避免这个提示,如何编写这个代码呢?可以参考下面的部分。

4 添加新工作表通用方法

在运行添加工作表代码前先删除工作簿中的工作表虽然可以避免同名错误,但也可能误删除有用的工作表,因此更为严谨的方法是在添加前先判断工作簿中是否存在相同名称的工作表,然后再进行下一步的操作。

Sub mynz_20() '第20讲 EXCEL工作表的添加与删除

Dim sh As Worksheet

For Each Sh In Worksheets

If Sh.Name = "MY" Then

MsgBox "工作簿中已有""MY""工作表,将删除原存在的工作表"

Application.DisplayAlerts = False

sh.Delete

Application.DisplayAlerts = True

EXIT FOR

End If

Next

With Worksheets

Set sh = .Add(after:=Worksheets(.Count))

sh.Name = "MY"

End With

End Sub

代码解析:

mynz_20过程是先检查工作表中是否含有“MY”工作表,如果有,立刻删除,最后使用Add方法在工作簿中新建“MY”工作表.

a) For Each…. Next…. 将遍历工作表,检查原工作表中是否含有“MY”的工作表。

b) MsgBox "工作簿中已有""MY""工作表,将删除原存在的工作表" 如果有“MY”的工作表,首先要弹出一个对话框,告知有这个工作表,讲删除。

c) Application.DisplayAlerts = False 将关闭弹出的警告对话框。

d) Application.DisplayAlerts = True 将打开弹出的警告对话框。

e) sh.Delete 删除原有的工作表。

f) Set sh = .Add(after:=Worksheets(.Count))

sh.Name = "MY"

添加一个新的工作表,工作表的名称为"MY"

代码截图:

从工作簿中删除工作表(工作表对象的添加与删除处理)(2)

工作表界面截图:

从工作簿中删除工作表(工作表对象的添加与删除处理)(3)

运行后首先出现下面的对话框,删除原来的工作表,之后再新建一个工作表。

从工作簿中删除工作表(工作表对象的添加与删除处理)(4)

今日内容回向:

1 ADD方法的意义是什么?

2 DELETE方法的意义是什么?

3 Application.DisplayAlerts 的意义是什么?

从工作簿中删除工作表(工作表对象的添加与删除处理)(5)

本讲内容参考程序文件:VBA代码解决方案修订(1-48).xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解

第1套教程(共三册):《VBA代码解决方案》:是入门后的提高教程

第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)

第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解

第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解

第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用

第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解

第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用

上述教程的学习顺序:

① 7→1→3→2→6→5或者7→4→3→2→6→5。

② 7→8

,