Excel 2007 VBA不会更改图表名称

我有以下代码

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 

(注意,小写“name”是VBE。)

在AddGraph中,Graph是使用Name="ChartXX"创build的。 赋值语句不会更改名称。

在Foo中,当名称赋值语句被执行时,控制被一直踢到调用栈的顶部。 (Graph的其他操作没有问题。)

所以我有两个问题:

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

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

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

Graph.Parent.Name =“XXXX”

看起来问题来源于Graph没有正确地设置到您正在创build的图表对象。

尝试这个:

 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”。