VBA Excel 2010 - 将未知图表分配给varible

时间:2016-02-25 10:58:18

标签: excel vba excel-vba charts

我试图将图表设置为变量,但是由于我的电子表格中有多个图表,我需要能够激活图表并将其分配给变量。

对于记录ChartHandel = ActiveSheet.ChartObject(1)不起作用,我也尝试了.Shape(1)Chart("Name of chart")这些也不起作用

Dim ChartHandel2 As Chart

ActiveSheet.ChartObjects(1).Activate
ChartHandel2 = ActiveChart

即使这样也会出现错误'91,对象变量或块变量未设置',它看起来应该可以正常工作,而且我确信我已经在一点上工作了(作为一种解决方法)

我的问题基本上是,如果图表不活跃(如果可能的话,如何),你可以将图表分配给变量吗?

2 个答案:

答案 0 :(得分:2)

分配对象时,必须使用赋值语句左侧部分的Set关键字

另外Chart对象是ChartObject对象的成员

这是一个处理它们的小例子

Option Explicit

Sub ChartObjects()

Dim chartObj As ChartObject

With ThisWorkbook.Worksheets("charts")

    For Each chartObj In .ChartObjects

        With chartObj ' to deal with current "ChartObject" object

            With .Chart ' to deal with "Chart" object of "ChartObject" object
                .ChartType = xlXYScatter ' or another XlChartType Enumeration (https://msdn.microsoft.com/en-us/library/office/ff838409.aspx)

                MsgBox .ChartArea.Name

                .HasLegend = False

                .ChartTitle.Caption = "chart title you need"
            End With

        End With

    Next chartObj

End With

End Sub

答案 1 :(得分:1)

如果您不确定索引,可以使用每个循环遍历图表。像这样的东西

Sub testChart()

    Dim testSheet As Worksheet
    Set testSheet = Sheets("Sheet1")

    Dim myChart As ChartObject
    Dim chartVariable As Chart
    With testSheet
        For Each myChart In .ChartObjects
            Set chartVariable = myChart.Chart

        Next myChart
    End With

End Sub

警告:它唯一的演示版本,需要进一步改变取决于你需要什么