![ActiveSheet.ChartObjects(“chart”) 始终不返回任何内容?](https://linux22.com/image/1371496/ActiveSheet.ChartObjects(%E2%80%9Cchart%E2%80%9D)%20%E5%A7%8B%E7%BB%88%E4%B8%8D%E8%BF%94%E5%9B%9E%E4%BB%BB%E4%BD%95%E5%86%85%E5%AE%B9%EF%BC%9F.png)
我正在查询工作表中的图表,我可以看到它在那里,但每次我执行以下代码时,它都会计算为“无”。这是为什么?
Sub DeleteGraph()
Dim graph As ChartObject
On Error Resume Next
'graph always evaluates to Nothing
graph = ActiveSheet.ChartObjects("frontier").Activate
If Not (graph Is Nothing) Then 'graph always evaluates to Nothing
ActiveSheet.ChartObjects("frontier").Activate
ActiveChart.Parent.Delete
End If
End Sub
当在工作表上单击按钮时,将执行此宏,该按钮运行以下初始化宏,重置所有计算并删除任何图表(如果存在):
Sub InitializeSheet()
'Get number of projects on worksheet and the corresponding 'final' cell number/ref to use in calculations - Private/Module Variables
projectCount = Application.WorksheetFunction.Count(Range("A:A"))
lastCell = projectCount + 1
DeleteGraph 'Above Macro called here
'Clear previous calculation data
Range("I:AD").Value = ""
End Sub
我需要删除在重置/初始化工作表时由宏创建的图表。在执行删除操作之前,我会检查图表是否存在(并且用户没有手动删除它)。出于某种原因,我无法让它工作。我忽略了什么?
答案1
小心在代码中使用On Error Resume Next
,尤其是那些没有经过彻底测试的代码。在这种情况下,它会掩盖行中的语法错误
graph = ActiveSheet.ChartObjects("frontier").Activate
因此,不会为 分配任何值graph
。请尝试以下方法:
子删除图() Dim graph 作为 ChartObject 发生错误时转到 ErrHandler 设置图形 = ActiveSheet.ChartObjects("frontier") graph.Delete 退出子程序 错误处理程序: msgBox "活动工作表上不存在图表!" 退出子程序 子目录结束
如果您不喜欢在找不到图表时弹出警告,只需删除该msgBox
行即可。