Vba 删除excel中我可以';t通道

Vba 删除excel中我可以';t通道,vba,excel,Vba,Excel,我正试图删除由于某种原因无法访问的工作表。每次我想访问它时,它都会崩溃。我正在使用以下宏删除关闭时不需要的工作表(所有以“SHEET”开头的工作表)将在关闭时删除。因此,我想我可以使用相同的宏,将“SHEET”更改为“CHART”,但由于某些原因,宏无法识别工作簿中有一个名为“CHART1”的工作表,因此不需要的工作表会留在那里。因为每次都会使工作簿崩溃 有没有办法删除这张表,或者另一个宏 以下是我当前用于删除图表工作表的宏: Private Sub Workbook_Deactivate()

我正试图删除由于某种原因无法访问的工作表。每次我想访问它时,它都会崩溃。我正在使用以下宏删除关闭时不需要的工作表(所有以“SHEET”开头的工作表)将在关闭时删除。因此,我想我可以使用相同的宏,将“SHEET”更改为“CHART”,但由于某些原因,宏无法识别工作簿中有一个名为“CHART1”的工作表,因此不需要的工作表会留在那里。因为每次都会使工作簿崩溃

有没有办法删除这张表,或者另一个宏

以下是我当前用于删除图表工作表的宏:

Private Sub Workbook_Deactivate()

Dim sh As Worksheet
Dim flg As Boolean    

For Each sh In Worksheets
     If sh.Name Like "Chart*" Then flg = True: Exit For
Next
If flg = True Then
     Call Delete_NEW_Unwanted_CHART
End If        

If ThisWorkbook.Saved = False Then
     ThisWorkbook.Save
End If

End sub
在一个模块中,我有:

Sub Delete_NEW_Unwanted_CHART()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Charts
    If Left(ws.Name, 5) = "Chart" Then                
        Application.DisplayAlerts = False
        ws.Delete
        Application.DisplayAlerts = True
    End If        
Next ws

End Sub

当我用断点运行这个程序时,它甚至不知道我有一个名为“CHART1”的工作表。这就好像此图表工作表的标志从未被识别。

您已将
ws
声明为工作表,然后将其循环到一系列图表中(对于工作簿图表中的每个工作表都有效-这没有意义)为此工作簿中的每个ws尝试
。Sheets
arguement和
Next

您已将
ws
声明为工作表,然后将其循环到一系列图表中(有效地用于工作簿图表中的每个工作表-这没有意义)请尝试对该工作簿中的每个ws.Sheets进行
论证和
下一步
我实际上刚刚发现它有什么问题。 如果将来有人遇到此问题,下面是正确的宏:

Private Sub Workbook_Deactivate()
For Each shC In Charts
 If shC.Name Like "Chart*" Then flg = True: Exit For
        Next
         If flg = True Then
    Call Delete_NEW_Unwanted_CHART
         End If


If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
End If
End sub
模块内写入:

Sub Delete_NEW_Unwanted_CHART()
Dim wsC As Chart

For Each wsC In ThisWorkbook.Charts
 If Left(wsC.Name, 5) = "Chart" Then

          Application.DisplayAlerts = False
            wsC.Delete
            Application.DisplayAlerts = True
            End If

     Next wsC


 End Sub

祝大家度过愉快的一天:-)

事实上,我刚刚发现它有什么问题。 如果将来有人遇到此问题,下面是正确的宏:

Private Sub Workbook_Deactivate()
For Each shC In Charts
 If shC.Name Like "Chart*" Then flg = True: Exit For
        Next
         If flg = True Then
    Call Delete_NEW_Unwanted_CHART
         End If


If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
End If
End sub
模块内写入:

Sub Delete_NEW_Unwanted_CHART()
Dim wsC As Chart

For Each wsC In ThisWorkbook.Charts
 If Left(wsC.Name, 5) = "Chart" Then

          Application.DisplayAlerts = False
            wsC.Delete
            Application.DisplayAlerts = True
            End If

     Next wsC


 End Sub
祝大家今天愉快:-)

为什么不呢

Private Sub Workbook_Deactivate()

Dim sh As Chart
Dim flg As Boolean

For Each sh In Charts
    If Left(sh.Name, 5) = "Chart" Then
        Application.DisplayAlerts = False
        sh.Delete
        Application.DisplayAlerts = True
    End If
Next

If ThisWorkbook.Saved = False Then
    ThisWorkbook.Save
End If

End Sub
为什么不呢

Private Sub Workbook_Deactivate()

Dim sh As Chart
Dim flg As Boolean

For Each sh In Charts
    If Left(sh.Name, 5) = "Chart" Then
        Application.DisplayAlerts = False
        sh.Delete
        Application.DisplayAlerts = True
    End If
Next

If ThisWorkbook.Saved = False Then
    ThisWorkbook.Save
End If

End Sub

很好的观点@SJR!!我正在使我的生活变得复杂:-)或者只是
如果sh.的名字像“Chart*”那么
。您可以将
Dim flg作为布尔值删除
,因为您在codeGood point@SJR!!我正在使我的生活变得复杂:-)或者只是
如果sh.的名字像“Chart*”那么
。您可以将
Dim flg作为布尔值删除,因为您没有在代码中的任何位置使用它