VBA Excel:删除工作簿中的所有图表和图形,但一个除外



我有一个生成大量工作表和图表的宏。还有各种子例程在运行,因此生成的每个工作表/图表的名称和数量永远不会相同。不变的是我的 HOME 工作表,它是用户的 UI,我希望它不受影响。

我在这里发现了一个类似的问题,即删除除您正在使用的工作表(即 HOME(之外的所有工作表。这是我到目前为止所拥有的。

Sub ZRESET()
Dim ws As Worksheet, wb As Workbook
Set wb = ActiveWorkbook
Sheets("HOME").Select
Application.DisplayAlerts = False
For Each ws In wb.Worksheets
If ws.Name <> "HOME" Then
ws.Delete
End If
If Chart.Name = "" Then
Charts.Delete
End If
Next
Application.DisplayAlerts = True
Range("B5:E5,B9:E9,B13:E13,B14:E14").ClearContents
Range("A1").Select
End Sub

工作表删除得很好,我挂断的是图表。我尝试了各种尝试来删除图表,有时它们会起作用(即将 Charts.Delete 放在 FOR 循环和 IF 语句之外(。但这需要我在工作簿中实际有一个图表。有时,用户可以只开发工作表,而不能开发图表。

有什么建议可以继续我删除工作表和/或图表的目标,同时保持我的主页工作表完好无损?

Option Explicit
Sub GetRid()
Dim ASheet As Worksheet
Dim AChart As Chart

Application.DisplayAlerts = False
Application.ScreenUpdating = False
'** first scan for and delete all non HOME worksheets ***
For Each ASheet In ActiveWorkbook.Worksheets
If UCase(ASheet.Name) <> "HOME" Then
ASheet.Delete
End If
Next
'** Now scan and delete any ChartSheets ****
For Each AChart In ActiveWorkbook.Charts
AChart.Delete
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Option Explicit
Sub AllSheetsAndcharts()
Dim AChart As ChartObject
Dim ASheet As Worksheet
Application.DisplayAlerts = False
For Each ASheet In ActiveWorkbook.Worksheets
If UCase(ASheet.Name) <> "HOME" Then
For Each AChart In ASheet.ChartObjects
AChart.Delete
Next
ASheet.Delete
End If
Next
Application.DisplayAlerts = False
End Sub

最新更新