|
▼Kein さん:
>Sub MyChart_Set_Axis2()
> Dim MyCh As Chart, MySe As Variant
> Dim i As Integer
> Dim MxP As Single, MiP As Single
>
> Set MyCh = ActiveSheet.ChartObjects(1).Chart
> Set MySe = MyCh.SeriesCollection
> With WorksheetFunction
> For i = 1 To MySe.Count
> If i = 1 Then
> MxP = .Max(MySe.Item(i).Values)
> MiP = .Min(MySe.Item(i).Values)
> Else
> If .Max(MySe.Item(i).Values) > MxP Then
> MxP = .Max(MySe.Item(i).Values)
> End If
> If .Min(MySe.Item(i).Values) < MiP Then
> MiP = .Min(MySe.Item(i).Values)
> End If
> End If
> Next i
> MxP = .Ceiling(MxP, 0.05)
> MiP = .Floor(MiP, 0.05)
> End With
> With MyCh.Axes(xlValue)
> .MajorUnit = 0.05
> .MinimumScale = MiP
> .MaximumScale = MxP
> End With
> Set MySe = Nothing: Set MyCh = Nothing
>End Sub
Keinさん。二度手間をとらせて申し訳ありません。
それで、どうしてもグラフごとの最小値をもとにして切のいい値をグラフスケールの最大値と最小値にしたかったので、Keinさんに教えてもらった上のコードと合わせて下記のコードを作ったのですが、
With MyCh.Chart.Axes(xlValue) の .Chart のところで、コンパイルエラー(メソッドまたはデータメンバが見つかりません)となってしまいます。
まだ、なにも解っていない超初心者なので変なコードになっていると思いますが、どのようにすればいいのか教えて頂きたく、お願い致します。
(長くなって、すいません。)
Dim MyCh As Chart, MySe As Variant
Dim i As Integer
Dim MxP As Single, MiP As Single
Dim KanB As Single
AAA1 = 5
AAA2 = 10
AAA3 = 50
AAA4 = 500
AAA5 = 5000
AAA6 = 50000
AAA7 = 500000
BBB = 5
ActiveSheet.ChartObjects("グラフ 809").Activate
Set MyCh = ActiveSheet.ChartObjects(1).Chart
Set MySe = MyCh.SeriesCollection
With WorksheetFunction
For i = 1 To MySe.Count
If i = 1 Then
MxP = .Max(MySe.Item(i).Values)
MiP = .Min(MySe.Item(i).Values)
Else
If .Max(MySe.Item(i).Values) > MxP Then
MxP = .Max(MySe.Item(i).Values)
End If
If .Min(MySe.Item(i).Values) < MiP Then
MiP = .Min(MySe.Item(i).Values)
End If
End If
Next i
MxP = .Ceiling(MxP, 0.05)
MiP = .Floor(MiP, 0.05)
End With
If MiP < 100 Then KanB = AAA1
If MiP >= 100 And MiP < 1000 Then KanB = AAA2
If MiP >= 1000 And MiP < 10000 Then KanB = AAA3
If MiP >= 10000 And MiP < 100000 Then KanB = AAA4
If MiP >= 100000 And MiP < 1000000 Then KanB = AAA5
If MiP >= 1000000 And MiP < 10000000 Then KanB = AAA6
If MiP > 10000000 Then
KanA = AAA7
End If
With WorksheetFunction
MxP = .Ceiling(.MxP, KanB)
MiP = .Floor(.MiP, KanB)
End With
With MyCh.Chart.Axes(xlValue)
.MinimumScale = MiP
.MaximumScale = MxP
End With
BMa1 = MyCh.Chart.Axes(xlValue).MajorUnit
BMi1 = MyCh.Chart.Axes(xlValue).MinimumScale
BBB1 = BMi1 + BMa1
BBB4 = BMi1 + BMa1 * (BBB - 1)
BBB5 = BMi1 + BMa1 * BBB
BBB11 = ((BBB1 / BMi1) - 1) * 100
BBB55 = ((BBB5 / BBB4) - 1) * 100
Range("IT1") = Round(BBB11, 1)
Range("IU1") = Round(BBB55, 1)
|
|