您的位置:来学习素材网 > 办公软件 > excel教程

猜你喜欢

2024-01-15 17:07
Excel VBA解读(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,则不能够捕捉指定工作表实际上是否已删除。

VBA

声明:本站拒绝任何弹窗、插件以及广告联盟的广告,本QQ号(254031582)只解决会员问题,素材失效问题,软件使用问题一律不回。

为广大设计朋友提供平面设计素材和教材、PSD素材、C4D模型、3DMAX模型、AE模板、矢量模板等下载

苏ICP备2023039977号-2

Copyright © 2010-2020laixuexi.cc. All Rights Reserved .