使用VBA创建并命名图表

时间:2019-03-19 15:47:26

标签: excel vba charts rename

我正在尝试创建将在Excel中插入简单条形图的宏。我有以下代码,这是我手动记录的结果:

ActiveSheet.Shapes.AddChart2(286, xl3DColumnClustered).Select
    ActiveChart.SetSourceData Source:=Range("Dashboard!$T$8:$U$9")
    ActiveSheet.Shapes("Chart 2").IncrementLeft 2222.25
    ActiveSheet.Shapes("Chart 2").IncrementTop 25.5
    ActiveSheet.Shapes("Chart 2").ScaleWidth 0.5541666667, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Chart 2").ScaleHeight 1.5416666667, msoFalse, _
        msoScaleFromTopLeft
    ActiveChart.Axes(xlValue).Select
    ActiveChart.Axes(xlValue).MinimumScale = 0
    Application.CommandBars("Format Object").Visible = False

这显然会创建,移动,调整大小和设置轴等。

但是,当我运行宏时,出现错误消息“找不到指定名称的项目”

显然,它正在寻找“图2”;

a)我不知道为什么将其称为“图表2”(创建图表时是否可以设置它?),以及 b)我不知道如何随后设置对象的名称。

我尝试使用:

ActiveChart.Name = "Chart Name"

但是我随后收到一条错误消息,提示“指定的维对当前图表类型无效”

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

图2表示至少是自上次重新打开工作簿以来创建的第二个图表。 您必须使用ActiveChart.Parent.Name = "Chart Name"

编辑:我通常将图表设置成这样的变量:

Dim Grafico As ChartObject
Set Grafico = ws.ChartObjects.Add(Left:=ws.Cells(13, 9).Left, _
    Width:=Ancho.Width / 2, _
    Top:=ws.Cells(13, 9).Top, _
    Height:=RangoGraficos.Height)
Grafico.Parent.Name = "Chart Object"

变量是西班牙语,但我相信它很容易理解