vba - 在 Excel VBA 中用图表填充变量数组

标签 vba excel

我正在处理一个文件,该文件根据用户的数据、变量和格式选择创建多达 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增加了一个额外的阵列单元,同时保留了它已经拥有的单元。因此,最后这就是我们在本地人中所拥有的:

enter image description here

关于vba - 在 Excel VBA 中用图表填充变量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49054867/

相关文章:

vba - 快速堆叠列和转置

VBA Excel 变量对多个键/顺序进行排序

excel - 这里我有一些第 1 列 : 的工作表

c# - 拖放在 DataGrid (WPF) 中不起作用

vba - 每次更改工作表时运行宏

excel - 使 VBA 函数参数成为一个列表,供用户从中选择

excel - VBA .VBProject.VBComponents.Item ("ThisWorkbook").CodeModule.AddFromString 不起作用

VBA在另一个Excel实例中运行代码并分离

excel - 在 Smart View for Oracle 中创建 VBA 刷新宏

c# - 安装其他 XLA 加载项时,VSTO 中的 Excel 加载项不起作用