質問

私はセルをループしてグラフの範囲を構築しようとしています。私の主な問題は、「i」を範囲に組み込む方法を理解できないことです。例を示します。:

Dim name As String
Dim newChart as Chart
Dim i as Integer
Set newChart = Charts.add    

For i = 1 To 20

    accName = Range("C" & i).Value          'I understand why this works. 

    With newChart
        .ChartType = xlColumnClustered
        .SeriesCollection.NewSeries     
        .SeriesCollection(1).Name = accName
        .SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E&i:G&i, I&i:K&i, M&i:O&i, Q&i:S&i")          'How can I get this to work?
        .SeriesCollection(1).XValues = wb.Worksheets("Summary-Account").Range("E3:G3, I3:K3, M3:O3, Q3:S3")
    End With

    i = i + 1

Loop
役に立ちましたか?

解決

あなたはおそらく持っている必要があります:

.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E" & i & ":G" & i & ", I" & i & ":K" & i & ", M" & i & ":O" & i & ", Q" & i & ":S" & i)
.

これまでで最も晴れた行ではなく、あなたに行くパターンを与えるべきです。「ループ」の代わりに「次のi」を必要とする他の問題がありますが、私のコンピュータ上では、これは私にそれに複数のシリーズを持つグラフをくれました。

他のヒント

  1. あなた しないでください 手動でインクリメント i.
    この関数は for loop すでにあなたのためにそれを行います。
    だから 削除 それは... i = i + 1.

  2. 今、あなたを作るために Range 仕事、あなたはその""がこのようなものになる必要があります : Range("E" & i & ":G" & i).私はあなたが6つの異なる列からデータを取得しようとしていることで達成しようとしていることをよく理解していません。.見る 範囲 詳細については。

を試してください
.SeriesCollection(1).Values = Range("E1").Resize(20,1).Value
.

これは、シリーズコレクション

で使用するためのすべての値を配列にコピーします。

Next iの代わりにLoopを使用します。そしてそのi = i+1を取り除きます。 また、"E" & i & ":G" & i

の代わりに"E&i:G&i"を使用してください。

VBA

でさらに1ステップ
Dim i as double
For i = 1 to 100 Step 10  '<= Step 10 means when updating i, i = i + 10, and default value would be 1
Loop  '<=breaks here, compile error is expected.
.

構文でさえも有効ではありません。キーワードLoopは他のキーワードDoに関連付けられており、ForNext

に関連付けられています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top