为什么我的工作表没有在Excel 2016中删除?

我偶然发现了Excel中一个有趣的问题。 我有一个在Excel 2013中正常工作的macros(我只是在发布之前对其进行了testing,并达到了我期望的结果),但在Excel 2016中失败。

该macros会删除一些工作表并将副本保存到用户指定的任何位置。 我得到一个Method Delete of Object '_Worksheet' failed错误在我的线上:

 Sheets("DPS Scorecard").Delete 

现在我知道工作表正在被正确引用,因为我input了?Sheets("DPS Scorecard").Name在即时窗口中input?Sheets("DPS Scorecard").Name ,我得到了DPS Scorecard ,这是我期望的工作表名称。

我试图使用

 Worksheets("DPS Scorecard").Delete 

但是得到了同样的错误。

我以为我应该尝试代号,这是Sheet8 ,所以我甚至使用

 Sheet8.Delete 

当我这样做时,Excel立即崩溃(虽然我没有收到错误)。

我也试过在删除必要的纸张之前激活另一张未被删除的纸张,但是这产生了相同的结果。 我也使用了On Error Resume Next一个导致代码完成,当然,但没有我需要删除的表被删除。

工作表和工作簿都是不受保护的。

有没有人有任何想法,为什么我可以在Excel 2013中删除我的工作表,但不是Excel 2016?

这是不幸的,因为我的办公室用户正在升级到2016年,这正在停止一个重要的业务stream程。

完整的子程序:

 Sub CreateCPR() Dim excelName As String Dim newWB As Workbook, curWB As Workbook Set curWB = ThisWorkbook 'Get Excel save name excelName = Application.GetSaveAsFilename(InitialFileName:=Mid(ThisWorkbook.Name, 1, FindNth(ThisWorkbook.Name, "_", 2)) & "CPR_.xlsm", fileFilter:="Excel Macro Enabled Workbook (*.xlsm), *.xlsm)", Title:="Save CPR") If excelName <> "False" And excelName <> vbNullString Then Application.Calculate Application.ScreenUpdating = False Application.DisplayAlerts = False ThisWorkbook.CheckCompatibility = False ThisWorkbook.SaveAs fileName:=excelName, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 'unprotect sheet ActiveSheet.Unprotect Password:="password" ActiveWorkbook.Unprotect ActiveSheet.EnableOutlining = True 'Delete sheets & show sheets Sheets("Summary").Visible = True Sheets("Candidate").Visible = True Sheets("DPS Scorecard").Delete Sheets("Portfolio Summary").Delete Sheets("Detail Data 2017 Q1").Delete Sheets("Detail Data 2016 YE").Delete Sheets("Detail Data 2015 YE").Delete Sheets("Detail Data 2014 YE").Delete Sheets("Detail Data 2013 YE").Delete Sheets("Instructions").Delete Sheets("Slicer Parameters").Delete Sheets("Summary").Select Application.Calculation = xlAutomatic On Error Resume Next Sheets("DPS - Candidate").Unprotect Password:="password" Sheets("DPS - Seller").Unprotect Password:="password" Sheets("Summary").Activate 'Order the tabs Sheets("Summary").Move Before:=Sheets(1) Sheets("DPS - Candidate").Move After:=Sheets("Summary") Sheets("Candidate").Move After:=Sheets("DPS - Candidate") Sheets("DPS - Seller").Move After:=Sheets("Candidate") Sheets("Summary").Activate On Error GoTo 0 ThisWorkbook.Save Application.DisplayAlerts = True Application.ScreenUpdating = True End If End Sub 

目前的解决方法:

我只是使用Sheets.Cells.Clear并为我想要删除的工作表设置工作表xlVeryHidden 。 这将至less让我的时间,直到我可以找出为什么Delete不起作用。