2017-07-27 57 views
0

我试图用VBA删除一系列单元格中的两个图表。它不是删除图表,而是一遍又一遍,而没有做任何事情。这是我到目前为止所尝试的。删除范围内的图表

For Each ChartObjects In Range(Cells(i + 3, 12), Cells(i + 19, 50)) 
    ChartObjects.Delete 
Next ChartObjects 
+0

ChartObjects不能分配给范围对象。您需要执行诸如检查“ChartArea.Top”或“ChartArea.Left”或“ChartArea.Width”与范围相同的坐标。或者你可以为图表使用某种类型的动态命名,并选中'Chart.Name'属性来删除 –

回答

1

您可以使用ChartObject的TopLeftCell属性检查表的左上角下的小区是否在上述范围内...

Dim oChrtObj As ChartObject 

For Each oChrtObj In ActiveSheet.ChartObjects 
    If Not Application.Intersect(oChrtObj.TopLeftCell, _ 
     Range(Cells(i + 3, 12), Cells(i + 19, 50))) Is Nothing Then 
      oChrtObj.Delete 
    End If 
Next oChrtObj 

但是请注意,你也可以使用单行删除所有图表...

activesheet.chartobjects.delete 

希望这有助于!

+0

Clever。每次只有ChartObject时,我只需添加一个“s”。 –

+0

实际上,为了清晰起见,由于ChartObject是一种数据类型,For Each控制变量的名称应该不同于名称ChartObject。所以我已经相应地修改了代码。 – Domenic