您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页ExcelVBA解读(73):添加和删除工作表——Add方法和Delete方法

ExcelVBA解读(73):添加和删除工作表——Add方法和Delete方法

来源:小侦探旅游网


ExcelVBA解读(73):添加和删除工作表——Add方法和

Delete方法

一般情况下,开启工作簿时,Excel默认自带3个工作表。如果想要更多的工作表,可以单击工作表界面底部工作表标签右侧的“插入工作表”标签或者按Alt F11组合键快速插入一个新工作表。也可以在工作表标签中单击右键,在弹出的菜单中单击“插入”,选择插入工作表的类型后插入一个新工作表。

下面是单击“插入工作表”标签后,Excel录制的代码:

Sub Macro1()

'

' Macro1 Macro

'由完美Excel创建

'

Sheets.Add After:=Sheets(Sheets.Count)

End Sub

在我的工作簿中,Excel插入了一个名为“Sheet4”的工作表,并且该工作表位于所

有工作表之后,这是由参数After指定的。

下面是先选取工作表Sheet1,然后单击右键,在弹出的菜单中单击“插入”后插入一个新工作表的操作,由Excel录制的代码:

Sub Macro2()

'

' Macro2 Macro

'由完美Excel创建

'

Sheets('Sheet1').Select

Sheets.Add

End Sub

Excel将插入的工作表默认放置在当前工作表之前。

从上面的代码可以看出,Excel VBA使用Add方法添加新工作表。

Add方法

Add方法创建一个新工作表并使其成为活动工作表,其语法如下:

工作表对象.Add(Before,After,Count,Type)

说明:

• 所有参数均可选。

• 参数Before指定一个工作表,新添加的工作表放置在该工作表之前。

• 参数After指定一个工作表,新添加的工作表放置在该工作表之后。

• 参数Before和参数After只能二选一。

• 参数Count指定要添加的工作表数量,默认值为1。

• 参数 Type指定添加的工作表类型,可以是下列xlSheetType常量之一:xlWorksheet(工作表)、xlChart(图表工作表)、xlExcel4MacroSheet(宏表)、xlExcel4IntlMacroSheet。如果基于已有模板插入工作表,那么指定该模板的路径。默认值是xlWorksheet。

• 如果没有指定参数Before和参数After,那么在当前工作表的前面插入新工作表。

• 该方法返回一个代表新工作表的对象。

示例1:添加并命名新工作表

下面的代码在工作簿中所有工作表之后添加一个新工作表,并将其命名为“完美Excel”。

Sub AddNewSheetPlaceInLast()

Worksheets.Addafter:=Worksheets(Worksheets.Count)

ActiveSheet.Name = '完美Excel'

End Sub

说明:

• 新添加的工作表成为活动工作表,因此使用Activesheet属性来返回当前工作表并使用Name属性来给工作表命名。

也可以删除工作表。在Excel界面底部的工作表标签中,选择要删除的工作表,单击右键,在弹出的菜单中选择“删除”,Excel会弹出一个提示工作表可能存在数据的警告消息框(如下图所示),单击“删除”按钮,即可删除工作表。

上述操作由Excel录制的宏代码为:

Sub Macro3()

'

' Macro3 Macro

' 由完美Excel创建

'

'

Sheets('Sheet6').Select

ActiveWindow.SelectedSheets.Delete

End Sub

从上面的代码可以看出,Excel VBA使用Delete方法删除工作表。

Delete方法

删除工作表,其语法如下:

工作表对象.Delete

说明:

• 该方法返回一个Boolean值。

• 删除工作表时,Excel会默认显示一个提示用户来确认删除操作的对话框。如果用户单击“取消”按钮,则返回False;如果单击“删除”按钮,则返回True。

示例2:删除除指定工作表名外的所有工作表

下面的代码删除工作簿中除“完美Excel”工作表外的所有工作表:

Sub DeleteWorksheet()

Dim ws As Worksheet

'关闭警告消息

Application.DisplayAlerts= False

'遍历工作表并删除工作表名不是'完美Excel'的工作表

For Each ws In Worksheets

If ws.Name <>'完美Excel' Then ws.Delete

Next ws

'恢复警告消息

Application.DisplayAlerts= True

End Sub

说明:

• 代码中设置DisplayAlerts属性值为False来禁止显示警告消息框,避免代码在删除工作表时弹出警告消息框,影响用户体验。代码最后将该属性值设置为True,以恢复Excel的默认设置。

• Delete方法也将隐藏的工作表删除。

示例3:安全地删除工作表

Excel必须保证工作簿中至少有一个可见工作表,因此在删除工作表时,如果删除工作簿中仅有的一个可见工作表,就会导致运行时错误。

下面的代码保证工作簿中至少有一个可见工作表,然后才进行删除操作。代码使用了《Excel VBA解读(72):隐藏工作表——Visible属性》示例1中用于统计工作簿中可见工作表数量的VisibleSheetsNum函数过程。

Sub DeleteSheet()

Dim strName As String

'指定要删除的工作表名

strName ='Sheet1'

If VisibleSheetsNum > 1Then

Application.DisplayAlerts = False

Worksheets(strName).Delete

Else

MsgBox '工作簿中已没有可供删除的工作表!'

End If

End Sub

下面是Steven M.Hansen给出的安全删除工作表的较完善的代码,辑录于此,供学习与研究。

说明:

• DeleteSheet函数过程需要两个变量,变量ws表示要删除的工作表,变量bQuiet设置在删除工作表时是否显示警告消息。

• 代码中的ws.Parent返回工作表的父对象,即工作表所在的工作簿。

• 变量bDeleted用于跟踪工作表是否删除。

• 过程代码使用了错误处理技术,在代码运行过程中发生错误时会直接执行错误处理代码。在后续文章中会详细介绍有关错误处理技术。

• 在工作簿中,至少要有一个可见工作表(包括图表工作表等),因此使用CountVisibleSheets函数过程统计工作簿中的可见工作表数。

• ws.Parent.Worksheets(ws.Name).Delete可获取一个Boolean值,代表工作表是否被删除。此外,如果直接使用ws.Delete,则不能够捕捉指定工作表实际上是否已删除。

本文属原创文章,转载请联系我(****************)或者注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务