2017-02-16 43 views
0

我需要爲我的工作簿中的每個工作表創建圖表(大致爲10,但可能爲12) - 我錄製了一個宏,並添加了語法I之前已經使用過迭代工作簿,並已經拿出了下面的內容。現在我的問題是,我發現它的語法是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 

EDIT
工作簿中有大致10的工作表,每個工作表包含用於在A1圖表的數據:I2 - 我需要曲線圖上的每個單獨的工作表的數據。

這有助於澄清?

回答

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

我得到一個編譯錯誤:上線.SetSourceData –

+0

@YohanGreenburg具有u試圖編輯的代碼沒有找到方法或數據成員?它是否按你的意圖工作? –

+0

使用您在ActiveChart.Shapes(「Chart 1」)行上的編輯代碼。ScaleWidth 1.9416666667,msoFalse,msoScaleFromBottomRight'它給了我一個錯誤:運行時錯誤'-2147024809(80070057)': 找不到指定的名稱 –

相關問題