我正在处理一个文件,该文件根据用户的数据,变量和格式选择创建多达120个图表。为此,我创建了一个变量数组来保存图表,这使我可以轻松地引用它们来添加数据,格式化等。到目前为止,这种方法对我来说效果很好。
现在我想让用户对格式进行小调整(调整轴上的最小值和最大值,添加或删除图例条目等)。为此,我想继续引用数组中的图表,但我似乎无法将现有图表添加到变体数组中。
当我最初创建图表时,我使用此行在创建图表时将图表添加到数组中。我填写适当的参数来放置和调整图表的大小,这似乎工作正常。
Set charts(graphIndex) = activeSheet.ChartObjects.Add(...)
创建所有图表后,我认为使用的非全局变量是从缓存中清除的(至少这是我目前的理解)。这意味着为了进行这些调整,我需要重新初始化并重新定义我用来引用图表的变量数组。这就是我正在努力的方向。这是我目前尝试将现有图表添加到变体数组中。
charts(graphIndex) = Worksheets(activeSheetName).ChartObjects("chart name").Chart
当我运行代码时,我得到了一个"运行时错误'':对象不支持属性或方法。"
希望我提供了足够的背景信息,但对此的任何帮助都将非常感激。这感觉应该相当容易,但我无法在网上找到任何信息。
答案 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
增加了一个阵列单元,同时保留了已有的阵列单元。因此,最后这是我们在当地人所拥有的: