使用该工作表中的数据在每个工作表上创建图表

问题描述 投票:0回答:2

我需要为工作簿中的每个工作表创建一个图表(大约 10 个,但可能是 12 个) - 我录制了一个宏,并添加了我之前用来迭代工作簿的语法,并提出了以下内容。 现在我立即看到的问题是语法指定了

Chart 1
并且一旦使用该名称就无法重新使用。

如何更改此语法以使其可重复用于在工作簿中的多个工作表上插入完全相同的图表?

Sub CreateChart()
Dim WS_Count As Integer, I As Integer

  WS_Count = ActiveWorkbook.Worksheets.Count
  For I = 1 To WS_Count
    Range("A1:I2").Select
    ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$I$2")
    ActiveSheet.Shapes("Chart 1").ScaleWidth 1.9416666667, msoFalse, _
        msoScaleFromBottomRight
    ActiveSheet.Shapes("Chart 1").ScaleHeight 1.4531248177, msoFalse, _
        msoScaleFromBottomRight
    ActiveChart.ClearToMatchStyle
    ActiveChart.ChartStyle = 205
  Next I
End Sub

编辑
该工作簿大约有 10 个工作表,每个工作表都包含 A1:I2 中图表的数据 - 我需要在每个单独的工作表上绘制该数据的图表。

这有助于澄清吗?

vba excel excel-2013
2个回答
0
投票

尝试下面的代码

只是不确定您希望图表的源来自哪里,它们都来自

Range("Sheet1!$A$1:$I$2")
,来自“Sheet1”吗?或从他们的表?

Sub CreateChart()

Dim ws As Worksheet
Dim Chart As Shape

For Each ws In ThisWorkbook.Worksheets
     Set Chart = ws.Shapes.AddChart2(201, xlColumnClustered)

     With Chart
        .Chart.SetSourceData ws.Range("$A$1:$I$2")
        .ScaleWidth 1.9416666667, msoFalse, msoScaleFromBottomRight
        .ScaleHeight 1.4531248177, msoFalse, msoScaleFromBottomRight
        .Chart.ClearToMatchStyle
        .Chart.ChartStyle = 205 ' why do you have this line ? why not define the chart style as 205 in the first line ?
     End With
Next ws

End Sub

0
投票

您的年龄段是什么?

图表:(插入饼图)

调查结果:受访者年龄以18-35岁为主,占样本的60%,其次是36-45岁(30%)和46岁及以上(10%)。人口统计重点凸显了为最常出现的客户年龄组解决服务问题的重要性。

© www.soinside.com 2019 - 2024. All rights reserved.