Excel。VBA。縦棒グラフの色をすべて別々の色に変えたい。
<VBA>
Excelの集合縦棒グラフの棒グラフの塗りつぶされている色についてですが、まとめて同じ色にするならば、手早く設定することができます。
ただ、別々の色で塗りつぶしたい場合には、一つずつ選択して、色を設定していく必要があります。
作業自体は、簡単でも、とっても面倒な作業だといえます。
そこで、Excel VBAでプログラム文をつくってみたらということで、次のようなプログラムを用意してみました。
Sub 棒グラフ色分け()
Dim グラフ As ChartObject
Dim 色コード As Variant
Dim i As Integer
色コード = Array(RGB(255, 0, 0), RGB(0, 0, 255), RGB(255, 255, 0), RGB(0, 255, 0))
Set グラフ = Worksheets("棒グラフ").ChartObjects(1)
With グラフ.Chart.SeriesCollection(1)
For i = 1 To .Points.Count
If i <= UBound(色コード) + 1 Then
.Points(i).Format.Fill.ForeColor.RGB = 色コード(i - 1)
Else
.Points(i).Format.Fill.ForeColor.RGB = RGB(200, 200, 200)
End If
Next i
End With
End Sub
実行してみます。
このように、棒グラフを別々の色に塗る分けることができました。
ところで、集合縦棒グラフは、複数のグループ間で同じ項目を比較したいときに使うと便利なグラフです。
年度ごとの男女別人数や、複数店舗の売上を月ごとに比べる場合など、それぞれの違いや傾向を一目で分かりやすく示せます。
では、プログラム文を確認しておきましょう。
Dim グラフ As ChartObject
シート上のグラフを扱うための変数を用意します。
Dim 色コード As Variant
色を指定するための、変数を用意します。
Dim i As Integer
繰り返し処理に使います。
色コード = Array(RGB(255, 0, 0), RGB(0, 0, 255), RGB(255, 255, 0), RGB(0, 255, 0))
今回は、順番に、赤・青・黄色・緑にしたので、RGBで対応しております。
RGB関数は、Red・Green・Blueの値で色を作る関数です
Set グラフ = Worksheets("縦棒グラフ").ChartObjects(1)
シート「縦棒グラフ」にある、最初のグラフを確認します。
With グラフ.Chart.SeriesCollection(1) ~ End With
「グラフ.Chart.SeriesCollection(1)」を省略するために、With文をつかいます。
For i = 1 To .Points.Count ~ Next i
For文をつかって、繰り返し処理をします。
「Points.Count」は、棒グラフが何本あるかを数えます。
If Then Else End If 文は、棒グラフを塗り分ける処理をします。
If i <= UBound(色コード) + 1 Then
「UBound」は、Array() で作った配列の中で、最大のインデックス番号(=何番目まであるか)を求めています。
「用意した色が何個あるか」を調べて、「何本の棒まで色分けできるか」を判断しています。
.Points(i).Format.Fill.ForeColor.RGB = 色コード(i - 1)
用意した色の数まで順番に色を設定していきます。
.Points(i).Format.Fill.ForeColor.RGB = RGB(200, 200, 200)
もし、色が足りなかったら、グレーにするようにします。
このプログラム文をアレンジすれば、パレート図の塗り分けができるようになります。