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”。我改了,现在所有的“名字”都是“名字”。但我原来的两个问题仍然存在。