Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3552 / 13646 ツリー ←次へ | 前へ→

【61463】ループでグラフを大量作成 eriwan 09/5/11(月) 11:57 質問[未読]
【61464】Re:ループでグラフを大量作成 kanabun 09/5/11(月) 13:33 発言[未読]
【61465】Re:ループでグラフを大量作成 eriwan 09/5/11(月) 14:33 お礼[未読]

【61463】ループでグラフを大量作成
質問  eriwan  - 09/5/11(月) 11:57 -

引用なし
パスワード
   こんにちは。VBAの初心者です。
以下のテストの採点結果で、受験者ごとのグラフをそれぞれ別シートに作成したいです。(#1〜5は分野で、各数字は得点です)


    A       B   C   D   E   F
           #1   #2   #3   #4   #5
1 受験番号1   15   10   20   18   10
2 受験番号2   20   15   10   20   10
3 受験番号3   10   20   20   18   15
   ・
   ・
50 受験番号50   10   10   10   15   20


簡易記録を使って一人分のグラフを作成することはできるのですが、2人目・3人目…と選択範囲を変化させながら作り続けることが出来ません。
以下のマクロでどこをどのようにいじれば良いのでしょうか?
よろしくお願いします。


Sub グラフ作成()
'
'
  Range("A1:F1,A3:F3").Select
  Range("A3").Activate
  Charts.Add
  ActiveChart.ChartType = xlRadar
  ActiveChart.SetSourceData Source:=Sheets("採点").Range("A1:F1,A3:F3"), PlotBy _
    :=xlRows
  ActiveChart.Location Where:=xlLocationAsNewSheet
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "採点結果"
  End With
  ActiveChart.Axes(xlValue).Select
  With ActiveChart.Axes(xlValue)
    .MinimumScale = 0
    .MaximumScale = 100
    .MinorUnit = 50
    .MajorUnit = 50
    .Crosses = xlAutomatic
    .ReversePlotOrder = False
    .ScaleType = xlLinear
    .DisplayUnit = xlNone
  End With
End Sub

【61464】Re:ループでグラフを大量作成
発言  kanabun  - 09/5/11(月) 13:33 -

引用なし
パスワード
   ▼eriwan さん:

>簡易記録を使って一人分のグラフを作成することはできるのですが、
> 2人目・3人目…と選択範囲を変化させながら作り続けることが出来ません。

こんな感じで 元データ範囲の行をLoopしてみてはいかがでしょう

Sub グラフ作成2()
  Dim Xrange As Range
  Dim Yrange As Range
  Dim Sheetname As String
  
  Set Xrange = Worksheets("採点").Range("A1:F1")
  Set Yrange = Xrange.Offset(2)  '最初のY軸データ範囲
  Set Yrange = Excel.Range(Yrange, Yrange.End(xlDown)) '全データ範囲
  For Each Yrange In Yrange.Rows
    With Charts.Add
      Sheetname = Yrange.Cells(1, 1).Value
      .Name = Sheetname
      .ChartType = xlRadar
      .SetSourceData Union(Xrange, Yrange), PlotBy:=xlRows
      .HasTitle = True
      .ChartTitle.Characters.Text = Sheetname
      With .Axes(xlValue)
>       .MinimumScale = 0
>       .MaximumScale = 100
>       .MinorUnit = 50
>       .MajorUnit = 50
>       .Crosses = xlAutomatic
>       .ReversePlotOrder = False
>       .ScaleType = xlLinear
>       .DisplayUnit = xlNone
      End With
    End With
  Next
End Sub

【61465】Re:ループでグラフを大量作成
お礼  eriwan  - 09/5/11(月) 14:33 -

引用なし
パスワード
   kanabunさん

ありがとうございます!(^-^)
早速貼り付けて使わせて頂き、出来上がりに感動しました。
自分でいろいろやってみたのですが、どれもうまくいかず…。
実は急ぎで必要だったため大変助かり、その上勉強にもなりました。
これを機会にもっともっと勉強したいと思います。

本当にありがとうございました!

3552 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free