excel - VBA删除事件工作表

标签 excel vba

我正在尝试创建一个删除事件工作表而不显示提示的宏。这就是下面的代码所做的......这在最后一张纸之前效果很好。无论如何我都会得到提示。我不想删除最后一张纸,同时我不想出现错误“1004”消息。有没有办法将上面的代码更改为不删除我的最后一张工作表并且不同时显示错误消息?

Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True

最佳答案

如果想法是删除ActiveSheet只有它,这是可行的,直到工作簿中只有一张纸:

Sub DeleteActiveSheet()

    If ThisWorkbook.Worksheets.Count = 1 Then
        Exit Sub
    Else
        Application.DisplayAlerts = False
        ThisWorkbook.ActiveSheet.Delete
        Application.DisplayAlerts = True
    End If

End Sub

如果想法是删除所有工作表,但最后一个,然后按照以下顺序:
  • 分配工作表变量 wksToStay来自类型Worksheet并将其设置为工作簿中的最后一个工作表;
  • 遍历所有 WorksheetsWorkbook.Worksheets收藏,从最后一张开始;
  • 总是执行检查,是否要删除的工作表wksToDeletewksToStay 同名;
  • 删除,如果名称不同;
  • 它将删除所有工作表,包括 hidden and the very hidden ones ;

  • Sub DeleteAllButLast()
    
        Dim wksToStay As Worksheet
        Dim wksToDelete As Worksheet
        Dim i As Long
    
        Set wksToStay = ThisWorkbook.Worksheets(Worksheets.Count)
    
        For i = Worksheets.Count To 1 Step -1
            Set wksToDelete = ThisWorkbook.Worksheets(i)
            If wksToDelete.Name <> wksToStay.Name Then
                Application.DisplayAlerts = False
                wksToDelete.Delete
                Application.DisplayAlerts = True
            End If
        Next
    
    End Sub
    

    关于excel - VBA删除事件工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60269043/

    相关文章:

    excel - Power Query 中的计算

    vba - 使用 Excel VBA 在文本框中创建公式

    excel - 加载所有动态加载 HTMLTable - VBA

    javascript - Office.js Excel Online > chart.getImage() 错误

    arrays - SUMPRODUCT 可以在数组公式中使用吗?

    excel - 如何创建一个宏来为范围内的公式添加前缀和后缀?

    vba - 获取VBA对话框的选项(xlDialogSort)

    vba - 打开其他工作簿后仍保留在事件工作簿中

    php - 如何使用 Zend 框架读取 Excel 文件?

    VBA 宏并将日期格式更改为 mmm-yy