当我以编程方式删除工作表时,Excel崩溃,自行修复并重新启动

时间:2018-08-30 15:54:17

标签: excel excel-vba

我的excel有问题。首先,我根据一些参数动态创建工作表,然后将工作表导出为PDF。到目前为止,一切都很好。现在,当我完成工作表后,不再需要它们了,我想删除它们。当我运行代码时,excel崩溃,进行修复然后重新启动。我想知道是否有人知道为什么这种情况持续发生。我还删除了每个工作表的命名范围,以防万一。

顺便说一句,如果我手动删除它们,一切都很好。

这是代码

Application.DisplayAlerts = False
Dim theName As Name
Dim newSheet As Worksheet
For i = 1 To unitsQty
    Set newSheet = ThisWorkbook.Worksheets("Project Info " & i)
    For Each theName In Names
        If (TypeOf theName.Parent Is Worksheet) And (newSheet.Name = theName.Parent.Name) Then
            theName.Delete
        End If
    Next
    Set newSheet = ThisWorkbook.Worksheets("System Spec " & i)
    For Each theName In Names
        If (TypeOf theName.Parent Is Worksheet) And (newSheet.Name = theName.Parent.Name) Then
            theName.Delete
        End If
    Next
Next i
Dim myArray() As Variant

ReDim myArray(unitsQty * 2)
With Sheets("Tables")
    For i = 1 To unitsQty
        myArray(i - 1) = "Project Info " & i
        Debug.Print myArray(i)
    Next i
    For i = 1 To unitsQty
        myArray(i - 1 + unitsQty) = "System Spec " & i
        Debug.Print myArray(i)
    Next i
End With

ThisWorkbook.Sheets(myArray(0)).Select
ThisWorkbook.Sheets(myArray).Select
ThisWorkbook.Sheets(myArray((unitsQty * 2 - 1))).Activate
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。因此,基本上在工作表中我有OLE对象,因此,每次尝试删除工作表时,我都有“此时无法进入中断模式”,当我单击“继续”时,excel崩溃了。

即使我尝试在删除工作表之前删除工作表中的所有对象,excel仍然崩溃。

我在网络上找不到任何解决方案,但是我找到了一种解决方法,它可以正常工作并提供所需的结果。解决方法是将工作表复制到临时工作簿并在那里进行所有工作,完成后,我只是在不保存工作簿的情况下关闭了工作簿。这样可以整理我的原始工作簿。