我正在查询工作表中的图表,我可以看到它在那里,但每次我执行以下代码时,它都会计算为“无”。这是为什么?
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
行即可。