首页 > 解决方案 > 尝试从其他工作表 vba 生成图形时发生错误

问题描述

我有一组代码,有时会产生错误。

代码
的作用 代码从另一个电子表格中获取固定范围的值。然后这些值仅用于创建散点图。并且图表被粘贴到当前工作表上。

错误信息

我得到的错误框

代码是运行时错误“-2147221504 (80040000)”:每个图表的最大数据系列数为 255。

同样,这个错误只是有时会产生。

编码

    Dim GraphRange As Range
    Dim cht As Shape

    Set GraphRange = Sheets("This Sheet").Range("V10:W8013")
    Set cht = Sheets("This Sheet").Shapes.AddChart2(, xlXYScatterSmoothNoMarkers)

    With cht.Chart
        .SetSourceData Source:=GraphRange
        .FullSeriesCollection(1).Format.Line.Weight = 1.5
        .ChartArea.Height = 520
        .ChartArea.Width = 400
        .Axes(xlCategory).ReversePlotOrder = True
        .ChartTitle.Text = "The Graph"

    End With

该代码是从另一个子调用的,但是,我认为调用它的条件不是问题。

编辑
当发生此错误时,无论出于何种原因,它都试图从应该粘贴图形的工作表中获取值。这意味着它甚至没有查看正确的电子表格。

标签: vbaexcel

解决方案


到目前为止,这一直对我有用......我 PlotBy:=xlColumns in .SetSourceData

Sub CreateGraph()

Dim GraphRange As Range
Dim cht As Shape

Set GraphRange = Sheets("This Sheet").Range("V10:W8013")
Set cht = Sheets("This Sheet").Shapes.AddChart2(, xlXYScatterSmoothNoMarkers)

    With cht.Chart
        .SetSourceData Source:=GraphRange, PlotBy:=xlColumns
        .SeriesCollection(1).Format.Line.Weight = 1.5
        .ChartArea.Height = 520
        .ChartArea.Width = 400
        .Axes(xlCategory).ReversePlotOrder = True
        .ChartTitle.Text = "My Graph"

    End With
End Sub

推荐阅读