2017-02-16 8 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を - Iは、個々のワークシート上のデータをグラフ化する必要があります。

これは明確にするのに役立ちますか?

答えて

0

必ずチャートのソースからすると仮定したいは、「シート1」からRange("Sheet1!$A$1:$I$2")から、それらはすべて、ある?ただ、

以下のコードを試してみてくださいませんかまたはそのシートから?

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は編集したコードを試しましたか?それは意図したように働いていますか? –

+0

編集したコードを 'ActiveChart.Shapes(" Chart 1 ")、ScaleWidth 1.9416666667、msoFale、msoScaleFromBottomRight'の行に表示します。実行時エラー '-2147024809(80070057)': 指定された名前が見つかりませんでした –

関連する問題