VBA激活在不同功能中创建的图表

时间:2014-07-18 13:00:58

标签: vba excel-vba excel

假设我在一个函数中创建了一个图表,如下所示:

Sub CreateChart()

Dim sh As Worksheet
Dim chrt as Chart

Set sh = ActiveWorkbook.Worksheets("Sheet1")
Set chrt = sh.Shapes.AddChart.Chart

End Sub

如何在不同的功能中激活此图表,我想将其移动到某个单元格?我使用以下代码,但它一直给我错误,并且不会激活图表。我甚至给了图表一个标题,并尝试使用它的标题来激活它但它不会识别名称:

Sub MoveChart()

ActiveSheet.ChartObjects("chrt").Activate
With ActiveChart.Parent
.Left = Range("N2").Left
End With

1 个答案:

答案 0 :(得分:0)

为什么要激活它?您可以直接使用您存储的chrt对象,您可以将其传递给参数化的MoveChart子例程:

Sub MoveChart(ByVal chrt As Excel.Chart)

        With chrt.Parent
                .Left = Range("N2").Left
        End With

End Sub

区别在于您现在可以移动任何图表。

稍后修改

第二个宏失败,因为图表仍未命名。尝试通过 VBA变量的名称访问图表并不起作用。所以,试试这个:

    Sub CreateChart()

            Dim chrt As Shape

            With ActiveWorkbook.Worksheets("Sheet1").Shapes
                    Set chrt = .AddChart()
                    Let chrt.Name = "New chart"
            End With

    End Sub

    Sub MoveChart()

            With ActiveWorkbook.Worksheets("Sheet1")
                    .ChartObjects("New chart").Left = .Range("N2").Left
            End With

    End Sub

请勿忘记修改代码以使用其他图表名称,其他工作表名称等。