我有以下代码
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中崩溃?
答案 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”。