【问题标题】:Brand new to VBA. Need assistance with macro to add series to a chart全新的 VBA。需要宏帮助才能将系列添加到图表中
【发布时间】:2016-06-27 05:22:48
【问题描述】:

我是 VBA 的新手,所以我正在努力制作我认为应该是一个简单的宏。我在这里研究了很长时间试图弄清楚,但我不明白出了什么问题。我在 excel 的第 1 到 200 行中有 200 个系列。每个系列都有两个 x 值(在 B 和 C 中)和两个 y 值在(D 和 E)中,我正在尝试制作一个 XYScatterLine 图。我想制作一个将所有 200 个系列添加到图表中的宏。我试图在下面写一个宏,但它不起作用,我很困惑。任何帮助将不胜感激!

Sub graph()
    Dim a
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterLines
    For a = 1 To 200
        With ActiveChart
            With .SeriesCollection.NewSeries
                .XValues = Sheets(Sheet1).Range("B" & a & ":C" & a)
                .Values = Sheets(Sheet1).Range("D" & a & ":E" & a)
                .Name = "name"
            End With
        End With
    Next
End Sub

我觉得我的错误从 .Xvalues 行开始,因为图表生成但没有绘制序列。非常感谢您提供的任何帮助!

【问题讨论】:

  • 将工作表名称放在引号中。

标签: vba excel


【解决方案1】:
Sub graph()

Dim cht As Chart
Dim a, sht

    Set sht = Sheets("Sheet1")
    Set cht = ActiveSheet.Shapes.AddChart.Chart
    cht.ChartType = xlXYScatterLines

    For a = 1 To 19
        With cht.SeriesCollection.NewSeries
            .Name = "name"
            .Values = sht.Range("D" & a & ":E" & a)
            .XValues = sht.Range("B" & a & ":C" & a)
        End With
    Next
End Sub

【讨论】:

    【解决方案2】:

    这有帮助吗?

    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterLines
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Name = "=[Add Series Name]"
    ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$B$1:$B$200"
    ActiveChart.SeriesCollection(1).Values = "=Sheet1!$D$1:$D$200"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=[Add Series Name]"
    ActiveChart.SeriesCollection(2).XValues = "=Sheet1!$C$1:$C$200"
    ActiveChart.SeriesCollection(2).Values = "=Sheet1!$E$1:$E$200"
    

    如果我使用的列引用与您的工作表不完全匹配,您可能需要修改它们。

    我还要注意,这段代码是相当静态的,如果您的数据集增加到超过 200 行,它也不会改变。

    【讨论】:

      【解决方案3】:

      将工作表名称放在引号中。也就是说,改变这个:

                  .XValues = Sheets(Sheet1).Range("B" & a & ":C" & a)
                  .Values = Sheets(Sheet1).Range("D" & a & ":E" & a)
      

      到这里:

                  .XValues = Sheets("Sheet1").Range("B" & a & ":C" & a)
                  .Values = Sheets("Sheet1").Range("D" & a & ":E" & a)
      

      【讨论】:

        猜你喜欢
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 2012-01-18
        • 2013-12-24
        相关资源
        最近更新 更多