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