【发布时间】:2017-08-09 18:35:07
【问题描述】:
我有一个生成大量工作表和图表的宏。还有各种运行的子例程,因此生成的每个工作表/图表的名称和数量永远不会相同。不变的是我的 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 语句之外)。但这需要我在工作簿中实际有一个图表。有时用户可以只开发工作表,但不能开发图表。
有什么建议可以继续我的目标,即删除 SHEETS 和/或 CHARTS,同时保持我的 HOME 表完好无损?
【问题讨论】:
-
如果您还想删除图表(如果您指的是图表工作表),则必须参考
Sheets集合而不是Worksheets。 -
你好,乔希,你是说有时它会删除其他工作表上的图表,有时它不会?或者如果没有找到图表会引发某种错误?
-
添加到@SJR 帖子。 Excel 中有 3 种类型的工作表。 1) ** 工作表(启动时加载的标准选项卡)。 **2) 图表表(图表设置为单独的选项卡。3) 宏表(仅附有 vba 的表。
Worksheets集合仅指 到工作表。Sheets集合指的是所有工作表,无论类型如何。 -
当我将 WS 从 Worksheet 更改为 Sheets 时,ws.Name 会导致“编译错误:找不到方法或数据成员”...您是正确的,我正在尝试删除 ChartSheets。