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