使用Excel VBA中的图表填充变量数组

时间:2018-03-01 16:55:06

标签: excel vba excel-vba

我正在处理一个文件,该文件根据用户的数据,变量和格式选择创建多达120个图表。为此,我创建了一个变量数组来保存图表,这使我可以轻松地引用它们来添加数据,格式化等。到目前为止,这种方法对我来说效果很好。

现在我想让用户对格式进行小调整(调整轴上的最小值和最大值,添加或删除图例条目等)。为此,我想继续引用数组中的图表,但我似乎无法将现有图表添加到变体数组中。

当我最初创建图表时,我使用此行在创建图表时将图表添加到数组中。我填写适当的参数来放置和调整图表的大小,这似乎工作正常。

Set charts(graphIndex) = activeSheet.ChartObjects.Add(...)

创建所有图表后,我认为使用的非全局变量是从缓存中清除的(至少这是我目前的理解)。这意味着为了进行这些调整,我需要重新初始化并重新定义我用来引用图表的变量数组。这就是我正在努力的方向。这是我目前尝试将现有图表添加到变体数组中。

charts(graphIndex) = Worksheets(activeSheetName).ChartObjects("chart name").Chart

当我运行代码时,我得到了一个"运行时错误'':对象不支持属性或方法。"

希望我提供了足够的背景信息,但对此的任何帮助都将非常感激。这感觉应该相当容易,但我无法在网上找到任何信息。

1 个答案:

答案 0 :(得分:1)

我只是在你的代码中猜测,如果你有Set字,它会起作用(但是,我没有看到整个代码,因此不确定)。

如果您确保有3个名为" Diagramm 1"," Diagramm 2"和" Diagramm 3"在第一个工作表上:

Option Explicit

Sub TestMe()

    Dim cht2        As Chart
    Dim varArray    As Variant

    With Worksheets(1)
        Set cht2 = .ChartObjects("Diagramm 2").Chart
        varArray = Array(.ChartObjects("Diagramm 1").Chart, cht2)
        ReDim Preserve varArray(2)
        Set varArray(2) = .ChartObjects("Diagramm 3").Chart

        Dim cnt As Long
        For cnt = LBound(varArray) To UBound(varArray)
            Debug.Print varArray(cnt).Name
        Next cnt
    End With

End Sub

Reedim Preserve增加了一个阵列单元,同时保留了已有的阵列单元。因此,最后这是我们在当地人所拥有的:

enter image description here