ActiveSheet.ChartObjects(“chart”) 始终不返回任何内容?

ActiveSheet.ChartObjects(“chart”) 始终不返回任何内容?

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

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行即可。

相关内容