📜  excel vba 删除工作表(如果存在) - C++ (1)

📅  最后修改于: 2023-12-03 15:30:39.781000             🧑  作者: Mango

Excel VBA 删除工作表(如果存在) - C++

有时,我们需要在 VBA 中删除 Excel 工作簿中的某个特定工作表。如果工作表不存在,则需要先创建它,否则删除操作将报错。本篇介绍如何使用 VBA 程序删除指定的工作表,如果工作表不存在,则不做任何操作,代码如下:

Sub DeleteSheetIfExists(sheetName As String)
    Dim sheet As Worksheet
    On Error Resume Next
    Set sheet = ThisWorkbook.Sheets(sheetName)
    If Not sheet Is Nothing Then
        Application.DisplayAlerts = False
        sheet.Delete
        Application.DisplayAlerts = True
    End If
End Sub
  • 使用 Sub 关键字定义一个子过程,名称为 DeleteSheetIfExists。
  • 定义参数 sheetName,表示需要删除的工作表名称。
  • 使用 On Error Resume Next 语句,表示出现任何运行时错误都不要停止程序执行,而是继续执行下一句语句。
  • 使用 ThisWorkbook.Sheets(sheetName) 语句获取指定名称的工作表,如果工作表不存在,则 sheet 变量将为 Nothing。
  • 如果 sheet 变量不为 Nothing,则表示需要删除该工作表。
  • 将 Application.DisplayAlerts 属性设置为 False,表示删除工作表时不显示警告。
  • 使用 sheet.Delete 语句删除工作表。
  • 将 Application.DisplayAlerts 属性设置为 True,表示删除完成后还原警告显示状态。

可以在其他 VBA 过程中调用 DeleteSheetIfExists 子过程,代码如下:

Sub RemoveOtherSheets()
    DeleteSheetIfExists "Sheet2"
    DeleteSheetIfExists "Sheet3"
    DeleteSheetIfExists "Sheet4"
End Sub

在此过程中,我们尝试删除 Sheet2、Sheet3 和 Sheet4 三个工作表。如果这些工作表不存在,则程序不会报错。如果存在,将依次进行删除操作。

以上就是使用 VBA 编写删除 Excel 工作表的详细介绍。