如何使用vba删除工作表?
要使用 VBA 删除工作表,必须使用 VBA 删除方法。您需要指定要删除的工作表,然后使用此方法。假设您要删除“Sheet1”,则必须提及“sheet1”,然后键入句点 (.),最后键入“Delete”。
在本教程中,我们将了解使用 VBA 代码删除工作表的不同方法。确保功能区上有开发人员选项卡,您可以从这里访问可视化基础编辑器。
使用工作表名称删除工作表
每个工作表都有一个名称,您可以使用编写代码来删除使用该名称的工作表。因此,假设您要删除“数据”工作表,代码为:
Sub vba_delete_sheet() Sheets("Data").Delete End Sub
删除工作表而不发出警告(提示)
当您删除工作表时,Excel 会显示一条消息以确认您是要删除还是取消它。当您使用 VBA 代码时,在这种情况下 Excel 也会执行此操作。
要解决此问题,您可以禁用屏幕更新以删除工作表,然后再启用它。
Application.DisplayAlerts = False Sheets("Data").Delete Application.DisplayAlerts = True
单元格的工作表名称
现在假设您想使用单元格值来使用工作表名称。在这种情况下,您需要使用VBA 范围对象来执行此操作。
使用图纸编号删除图纸
这是正确的。您可以使用图纸编号将其删除。这是代码。
Sub vba_delete_sheet() Sheets(1).Delete End Sub
删除活动工作表
要删除活动工作表,可以使用“ActiveSheet”对象,而不是使用工作表名称来指定工作表。
ActiveSheet.Delete
就像我说的,这会删除活动工作表,您可以在删除它之前激活它。但显然,您不需要这样做,因为您可以引用工作表并将其删除,正如我们在本教程开头看到的那样。
删除前检查该工作表是否存在
您还可以编写代码来检查工作表是否存在,然后将其删除。
Sub check_sheet_delete() Dim ws As Worksheet Dim mySheet As Variant mySheet = InputBox("enter sheet name") Application.DisplayAlerts = False For Each ws In ThisWorkbook.Worksheets If mySheet = ws.Name Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub
在此代码中,您可以使用FOR EACH来迭代所有工作表。然后,如果工作表的名称等于您在输入框中键入的名称,则使用IF 语句删除该工作表。
从工作簿中删除所有工作表
我相信您心里有这个问题,但恐怕不可能删除工作簿中的所有工作表。您至少还剩下一张工作表。
但我找到了解决这个问题的方法。您可以插入一个新的空白表,然后删除所有已有的空白表。
代码如下:此代码添加一个新工作表并删除所有其他工作表。
Sub vba_delete_all_worksheets() Dim ws As Worksheet Dim mySheet As String mySheet = "BlankSheet-" & Format(Now, "SS") Sheets.Add.Name = mySheet Application.DisplayAlerts = False For Each ws In ThisWorkbook.Worksheets If ws.Name <> mySheet Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub