[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで折れ線グラフの体裁を整えたい』(ロン)
いつもお世話になっています。
VBAで折れ線グラフを自動作成したのですが、
上限、下限のマーカーをなくして実線のみに変更したいです。
一度に範囲してしているのですが、それぞれの範囲を分けて
グラフ作成すればいいのでしょうか?
例:データ
A B C D
1 ロットNo. 上限 下限 実績
2 101 5 2 4.3
3 102 5 2 3.8
4 103 5 2 3.5
5 104 5 2 4.2
Sub Test()
Dim Target As Range
Set Target = ActiveSheet.Range("A1:D6")
ActiveChart.ChartType = xlLineMarkers
With ActiveChart
.SetSourceData Source:=Target, PlotBy:=xlColumns
.HasTitle = True
.Axes(xlCategory).AxisBetweenCategories = False
End With
End Sub
こんな感じでグラフ化すると、それぞれの線にマーカーがつきました。
上限、下限を実線のみでマーカーをなくし、同じ色にしておきたいです。
よろしくお願いします。
Excel2007
Sub test2()
Dim Target As Range
Set Target = ActiveSheet.Range("A2:D6")
With ActiveSheet.ChartObjects.Add(100, 100, 200, 200).Chart
.ChartType = xlLineMarkers
With .SeriesCollection.NewSeries
.XValues = Target.Columns(1)
.Values = Target.Columns(4)
End With
.HasTitle = True
.Axes(xlCategory).AxisBetweenCategories = False
End With
End Sub
Sub test3()
Dim Target As Range
Dim myChart As Chart
Dim i As Long
Set Target = ActiveSheet.Range("A2:D6")
Set myChart = ActiveSheet.ChartObjects.Add(100, 100, 200, 200).Chart
myChart.ChartType = xlLineMarkers
For i = 1 To 3
With myChart.SeriesCollection.NewSeries
.XValues = Target.Columns(1)
.Values = Target.Columns(i + 1)
End With
Next
For i = 1 To 2
With myChart.SeriesCollection(3)
myChart.SeriesCollection(i).MarkerStyle = xlMarkerStyleNone
myChart.SeriesCollection(i).Border.Color = .Border.Color
End With
Next
myChart.HasTitle = True
myChart.Axes(xlCategory).AxisBetweenCategories = False
End Sub
回答、ありがとうございます。
Set myChart = ActiveSheet.ChartObjects.Add(100, 100, 200, 200).Chart
この意味を教えて下さい。
それから、マクロを実行すると
実績の線がマーカーなしになって、下限の線がマーカー付きになってしまいます。
これはどこを修正すればいいでしょうか?
お手数をおかけしてすみません。
よろしくお願いします。
ロン
>Set myChart = ActiveSheet.ChartObjects.Add(100, 100, 200, 200).Chart 「ステップイン」で、アクティブシートに白紙のグラフが作成されるのが確認でき ると思います。 (100, 100, 200, 200)は、グラフの(左位置,上位置,幅,高さ)を指定していま す。 今回は適当な値を入れてます。
これは、埋め込みグラフの場合で、グラフシートに作成の場合は
Set myChart = Charts.add
とします。
下限がマーカー付きとなる理由は、わかりません。
「ステップイン」で気づくことがあるかもしれま
せん。試してみてください。
なお、For i = 1 To 2のブロックですが、
今見返すと、With句の意味がないばかりか、わかりにくいので
↓と差し替えてください。こっちのほうが何をしているか理解しやすいかもしれません。
For i = 1 To 2
With myChart.SeriesCollection(i)
.MarkerStyle = xlMarkerStyleNone
.Border.Color = myChart.SeriesCollection(3).Border.Color
End With
Next
系列1と系列2についてマーカーをなしに変更し
線の色は系列3と同じにしています。
これも「ステップイン」で実行すれば確認できると思います。
ご教授ありがとうございました。
確認させていただきます。
少しずつですが、これからも勉強していきたいと思いますので
よろしくお願いします。
ロン
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.