|
こんにちは。ponponです。
> .Add(Left:=400, Top:=t + 9・・・
> ↑
> .Add(Left:=400 + ((i - 3) Mod 4) * 200
> これで、0,1,2,3,0,1,2,3,……の繰り返しにすることができました。
> 後は、Top:=t + 9の部分なのですが、
> tの値が、0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0……と変化するように
↑
間違いでした。0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0……となるようにです。
> なれば、うまくいくはずなんですが・・思いつきません。残念。。。
> 別な角度から考えた方がいいのかな? 配列???
↑
これでやってみました。
一応できたのですが、スマートではありませんというかもっと他によい方法がありそうな気がするのですが……
以下コードです。
Sub 参照元の設定()
Dim i As Integer
Dim t As Integer
Dim m As Long
Dim myArray As Variant
myArray = Array(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, _
0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
m = Range("A65536").End(xlUp).Row
t = 0
For i = 3 To m
With ActiveSheet.ChartObjects.Add(Left:=400 + ((i - 3) Mod 4) * 200, _ Top:=t + 9, Width:=200, Height:=200).Chart
.SetSourceData Source:=Union(Range(Cells(2, 1), Cells(2, 6)), _
Range(Cells(i, 1), Cells(i, 6))), PlotBy:=xlRows
.ChartType = xlRadarFilled
.SeriesCollection(1).Interior.ColorIndex = 4
.HasLegend = False
With .PlotArea
.Interior.ColorIndex = 35
.Left = 35
.Top = 40
.Width = 130
.Height = 130
End With
With .Axes(xlValue)
.MinimumScale = 0
.MaximumScale = 100
.MinorUnit = 5
.MajorUnit = 20
.Crosses = xlAutomatic
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
End With
t = t + 200 * myArray(i - 3)
Next
End Sub
Sub グラフの削除()
Dim CH As ChartObject
Set allCH = ActiveSheet.ChartObjects
For Each CH In allCH
CH.Delete
Next
End Sub
|
|