0

Excelシートを実行し、一連の行を通過して各行のグラフを作成するマクロを作成しようとしています。

必要なことを実行するコードが少しありますが、行ごとに個別のグラフが必要な場合は、すべてを1つのグラフにまとめます。

`Dim i As Integer
 Dim ws As Worksheet
 Set ws = Sheets("Master Sheet")
 For Row = 1 To 20
 Dim my_cell
 Dim rng As Range
 Set rng = Sheets("Master Sheet").Range("J8:Y8")

 For Each my_cell In rng
 If my_cell <> "" Then

 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.SetSourceData Source:=Range("'Master Sheet'!$J$8:$Y$8")
 ActiveChart.ChartType = xlLineMarkers
 ActiveChart.Location Where:=xlLocationAsNewSheet
 ActiveSheet.Activate
 ActiveChart.PlotArea.Select
 ActiveChart.SeriesCollection(1).XValues = "='Master Sheet'!$J$2:$Y$2"
 ActiveChart.SeriesCollection(1).Name = "=""FP"""
 ActiveChart.SeriesCollection.NewSeries
 ActiveChart.SeriesCollection(2).Name = "=""Progress"""
 ActiveChart.SeriesCollection(2).Values = _
 "='Master Sheet'!$J$8,'Master Sheet'!$AF$8:$AH$8"
 ActiveChart.DisplayBlanksAs = xlInterpolated
 ActiveSheet.Activate
 ActiveChart.ChartArea.Select

 Else
 Exit For ' Blank cell found, exiting
 End If
 Next

 Next Row
 End Sub` 

誰かが私に手を差し伸べて、私がどこで間違っているのかを知ることができれば、それは素晴らしいことです。

4

1 に答える 1

2

For NextFor Eachループがうまく構造化されているかどうかはわかりません。For Each理想的には、範囲をステップスルーし、ステートメントで定義した値を実際に使用します。あなたのワークブックを見ずに、私はグラフの作成をシミュレートするために小さな範囲のデータを適応させました。

私はあなたの同じコードを取り、数字の各行について同じワークシートにグラフを生成しました。これらの原則を採用して、ロジックに適用できます。

Sub test()
 Dim Row As Integer
 Dim ws As Worksheet
 Dim rng As Range

 Set ws = Sheets("Sheet1") 'Change this to: Set ws = Sheets("Master Sheet")

 For Row = 1 To 6
 Set rng = ws.Range("B1:D1").Offset(Row, 0) 'Change to (I'm guessing here): ws.Range("$J$7:$Y$7").Offset(Row, 0)

 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.SetSourceData Source:=Range(ws.Name & "!" & rng.Address)
 ActiveChart.ChartType = xlLineMarkers
 ActiveChart.PlotArea.Select
 ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!$B$1:$D$1" 'Change to "='Master Sheet'!$J$2:$Y$2"
 ActiveChart.SeriesCollection(1).Name = ws.Range("A1").Offset(Row, 0).Value 'Change this to whatever you want to name the graphs. This is currently set to dynamicly name each graph by the series name set in Column A.
 'ActiveChart.Location Where:=xlLocationAsNewSheet 'uncomment this line to put on new sheet
 'ws.Select 'Need to go back to worksheet

 Next Row

 Set ws = nothing
 Set rng = nothing
End Sub

ここに役立つかもしれないいくつかのリンクがあります。 forループVBAおよび ExcelVBAでのグラフの作成と配置:一意の名前グループをループして対応するグラフを作成するグラフ作成マクロ?

Googleには他にも多くのリンクがあります。

私があなたの質問を誤解したか、何か他のものが必要な場合は、私に知らせてください。

乾杯

于 2012-10-16T00:02:13.783 に答える