VBA删除表|如何使用VBA代码删除工作表?

Excel VBA删除表

要在VBA中删除工作表,我们需要使用“删除工作表”方法。要首先应用此方法,我们需要通过调用工作表名称来确定要删除的工作表。我们有两种方法可以做到相同,首先直接编写sheet1.delete,第二种方法是sheets(sheet1).delete。

因此语法如下。

工作表(“工作表名称”)。删除

或者

Sheets(“工作表名称”)。删除

因此,首先,我们需要使用以下任一方法来指定工作表名称 工作表 或者 床单 对象,那么以后我们可以使用 “删除” 方法。

如何使用VBA代码删除Excel工作表?

您可以在此处下载此VBA删除工作表Excel模板– VBA删除工作表Excel模板

Example#1 –使用工作表名称删除工作表

假设您有很多工作表,并且要删除特定的工作表,我们需要通过工作表的名称来提及。例如,我有3个不同的工作表,分别命名为“ Sales 2016”,“ Sales 2017”和“ Sales 2018”。

如果我要删除名为“2017年销售额”,那么我必须像下面这样提及工作表名称。

代码:

 Sub Delete_Example1()工作表(“工作表2017”)。结束子 

直接提到工作表名称的问题,我们看不到VBA的IntelliSense列表。无论如何,将该方法称为“删除”.

代码:

 子Delete_Example1()工作表(“工作表2017”)。删除结束子 

因此,这将删除名为“2017年销售额“.

删除工作表时出错: 如果我们尝试删除不存在的工作表,或者如果我们错误地提到了工作表名称,则将收到vba错误,如下所示: “下标超出范围”。

在上面,我收到“下标超出范围”错误,因为在我的工作簿中没有名为“ Sales 2017”的工作表名称。

Example#2 –按工作表名称删除变量

正如我们在上面的示例中看到的那样,当我们使用Worksheets对象引用工作表名称时,我们看不到IntelliSense列表。要查看IntelliSense列表,我们需要使用变量。

步骤1: 首先将变量声明为 工作表.

代码:

 子Delete_Example2()昏暗的工作表作为工作表结束子 

第2步: 由于工作表是一个对象变量,因此我们需要使用““ 单词。

代码:

 Sub Delete_Example2()昏暗Ws作为工作表集Ws = Worksheets(“ Sales 2017”)结束Sub 

现在,变量“ Ws”引用了名为“ Sales 2017”的工作表。

第三步: 现在使用变量“瓦数”,我们可以访问工作表的所有IntelliSense列表。

代码:

 子Delete_Example2()昏暗Ws作为工作表集Ws = Worksheets(“ Sales 2017”)Ws。结束子 

第4步: 在IntelliSense列表中,选择“删除“ 方法。

代码:

 Sub Delete_Example2()昏暗Ws作为工作表集Ws = Worksheets(“ Sales 2017”)Ws.Delete End Sub 

像这样使用变量,我们可以访问IntelliSense列表。

Example#3 –删除活动工作表

活动表不过是当前处于活动状态或已选择的任何工作表。对于这种方法,我们无需提及工作表名称。例如,查看下面的VBA代码。

ActiveSheet.Delete

现在,活动工作表为“ Sales 2017”。

如果我运行代码,它将删除活动工作表,即“ 2017年销售”。

现在,我将选择“ Sales 2016”。

现在它将删除活动工作表,即“ Sales 2016”。

这样,我们可以使用“ Active Sheet”对象删除工作表。

笔记: 要使用此方法,我们需要绝对确定我们对活动工作表正在做什么以及哪个工作表将成为活动工作表。

Example#4 –删除多个工作表

在上面的示例中,我们已经看到了如何删除一个工作表,但是如果我们有多个工作表,那么假设我们要删除10个工作表该怎么办。

我们无法继续编写10行代码来删除工作表,因此我们需要使用循环遍历工作表的集合并删除它们。

下面的代码将遍历工作表并删除工作簿中的所有工作表。

代码:

 子Delete_Example2()将ActiveWorkbook中每个W的Ws作为工作表昏暗。工作表Ws.Delete下一个Ws结束Sub 

上面的代码将引发错误,因为它尝试删除工作簿中的所有工作表。因此,为了避免这种情况,我们需要保留至少一个工作表。

如果要删除除活动工作表以外的所有工作表,则需要使用以下代码。

代码:

 子Delete_Example2()将ActiveWorkbook.Worksheets中的每一个Ws作为工作表的Wim缩小如果ActiveSheet.Name Ws.Name然后Ws.Delete End如果下一个Ws结束Sub 

同样,如果我们不想删除特定的工作表,而是要删除所有其他工作表,则可以使用以下代码。

代码:

 Sub Delete_Example2()将ActiveWorkbook.Worksheets中的Ws作为工作表的Ws.Ws.Name设置为“ Sales 2018”,然后'如果下一个Ws End,则可以更改工作表名称Ws.Delete End。 

上面的代码将删除所有工作表,但工作表名为“ Sales 2018”。