Excel 2007 VBA不会更改图表名称

时间:2012-06-05 18:51:48

标签: excel vba excel-vba charts

我有以下代码

Sub Foo()
    Dim Graph As Chart
    Set Graph = AddGraph()
    Graph.name = "XXXX"
End Sub

Function AddGraph() As Chart
    Dim Graph As Chart
    '
    '
    '
    Graph.name = "XXXX"
    Set AddGraph = Graph
End Function

(注意,VBE会降低“名称”。)

在AddGraph中,使用Name="ChartXX"创建图表。赋值语句不会更改名称。

在Foo中,当执行名称赋值语句时,控制将一直踢到调用堆栈的顶部。 (Graph的其他操作不会引起任何问题。)

所以我有两个问题:

1 )为什么名称更改在AddGraph中不起作用?和

2 )为什么以后名称更改会在Foo中崩溃?

2 个答案:

答案 0 :(得分:2)

您忽略了告诉我们AddGraph()如何添加图表或图表类型。 Catering负责人假设您添加了图表表,在这种情况下,Graph.Name是有效的属性。但是,如果您已将图表添加为嵌入图表,则Graph.Name无意义。相反,您必须设置Graph的父级名称ChartObject:

Graph.Parent.Name =“XXXX”

答案 1 :(得分:0)

看起来问题源于图表未正确设置到您正在创建的图表对象。

试试这个:

Option Explicit

Sub Foo()
    Dim Graph As Chart
    Set Graph = AddGraph()
    Graph.Name = "MMMMMMM"
End Sub

Function AddGraph() As Chart
    Charts.Add
    With ActiveChart
        .ChartType = xlXYScatterLines
        .SetSourceData Source:=Sheets("Sheet1").Range("A1:B5")
        .Name = "XXXX"
    End With
    Set AddGraph = ActiveChart
End Function

一步一步,你会看到你的图表在函数中被命名为“XXXX”,一旦它返回到子图面,就会重命名为“MMMMMM”。