VBA Excel:删除工作簿中的所有图表和graphics,除了一个

我有一个生成大量工作表和图表的macros。 也有不同的子程序运行,所以生成的每个工作表/图表的名称和数量永远不会相同。 常数是我的HOME工作表,这是用户的用户界面,我希望它不受影响。

我在这里发现了一个类似的问题,就是删除除了正在使用的工作表(即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 

工作表删除罚款,挂断我有图表。 我尝试了各种尝试去除图表,有时他们工作(即将图表放在FOR循环和IF语句之外)。 但是这要求我在工作簿中实际上有一个图表。 有时用户可以开发工作表,但没有图表。

任何build议来继续我的目标删除SHEETS 和/或图表,同时保持我的主页完好无损?

 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