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

时间:2017-02-16 17:48:15

标签: excel vba excel-vba excel-2013

我需要为我的工作簿中的每个工作表创建一个图表(大约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 - 我需要在每个工作表上绘制数据。

这有助于澄清吗?

1 个答案:

答案 0 :(得分: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