我正在尝试删除因某些原因无法访问的工作表。每次我想访问它时它都会崩溃。我正在使用以下宏来删除关闭时不需要的工作表(所有以“SHEET”开头的工作表)在关闭时被删除。所以我认为我可以使用相同的宏并将“SHEET”更改为“CHART”,但由于某种原因,宏无法识别我在工作簿中有名为“CHART1”的工作表,因此不需要的工作表会保留在那里。因为它每次都会使工作簿崩溃
有没有办法可以删除这张表,另一张宏呢?
这是我目前用来删除CHART表的宏:
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”的工作表。就好像永远不会识别此图表工作表的标志一样。
答案 0 :(得分:0)
您已将ws
声明为工作表,然后通过一系列图表循环播放(有效地用于工作簿图表中的每个工作表 - 这没有意义)尝试For Each ws In ThisWorkbook.Sheets
争论和Next
答案 1 :(得分:0)
我其实刚刚发现了它的错误。 如果将来有人遇到这个问题,这是正确的宏:
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
每个人都过得愉快: - )
答案 2 :(得分:0)
为什么不呢?
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