Excel 2007 VBA不会更改图表名称

Excel 2007 VBA不会更改图表名称,vba,excel,charts,Vba,Excel,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使用小写字母“na

我有以下代码

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使用小写字母“name”。)

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

在Foo中,当执行name赋值语句时,控件会一直踢到调用堆栈的顶部。(图形的其他操作不会导致任何问题。)

所以我有两个问题:

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


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

问题似乎源于图形未正确设置到正在创建的图表对象

试试这个:

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

您忽略了告诉我们AddGraph()如何添加图表,或者是什么类型的图表。餐饮部负责人假设您添加了图表表,在这种情况下,Graph.Name是一个有效属性。但是,如果您将图表作为嵌入式图表添加,Graph.Name将毫无意义。相反,您必须设置图形的父对象ChartObject的名称:


Graph.Parent.Name=“XXXX”

(注意,小写的“Name”是VBE)
您是否在某个地方定义了变量
Name
?类似于
Dim name as String
No。如果录制更改图表名称的宏,“name”是小写。不,它不是:)只有在您将
Dim name声明为..
时才会这样做。试试这个。关闭所有Excel文件。然后打开一个新的excel文件。用虚拟数据填充2行。创建一个图表,现在记录一个宏。现在检查:)我运行了这个实验,你是对的:“Name”是大写的。在我的代码中,我注意到另一个例程有一个变量dim'd作为Name对象,dim语句中的“Name”也是l.c。在我的项目中没有全局变量“Name”或“Name”。我发现一个例程与我所看到的例程不同,它有一个调用参数“name”。我改了,现在所有的“名字”都是“名字”。但我原来的两个问题仍然存在。