プロが教える店舗&オフィスのセキュリティ対策術

VBAの初心者です。
棒グラフで1つの系列の色を自動で変えたいのですが、うまくできません。
エクセルファイルは品目ごとにシートが分かれていてすべておなじようにグラフがあります。
図のように、進行率順に並び替えるので、シートごとに店舗「E」は順番がかわります。
例としてシート「りんご」のグラフの店舗「E」のみを色を変えていく場合はどのようにしたらできるでしょうか?
マクロの記録でやってみてもうまくいきません。

ご回答、よろしくおねがいします。

「VBAで棒グラフの色を変えたい」の質問画像

A 回答 (3件)

atom11290301さん こんにちは。


グラフはマクロ記録だけではなかなか難しいようですね。

一応簡単ですが、以下の処理でできると思います。
Sub Eの色変更()
 Dim I As Integer
 Dim 店舗名 As Variant
 With Sheets("りんご").ChartObjects("グラフ 1").Chart.SeriesCollection(1)
   店舗名 = .XValues
   For I = 1 To UBound(店舗名)
     If 店舗名(I) = "E" Then .Points(I).Interior.ColorIndex = 3
   Next I
 End With
End Sub

注)sheet1、"グラフ 1"、色(ColorIndex)等は変更してください。
    • good
    • 0
この回答へのお礼

色が変更できるようになりました。
すごく助かりました!
丁寧なご回答ありがとうございました!

お礼日時:2011/06/22 10:13

系列の色を変えるではなく、要素(質問の場合のE)の色を変える、では無いの?


例データ
a10
b30
c20
で棒グラフを作り
bのデータ要素の書式設定をマクロの記録をとって見ましたか?(bは質問ではE)
マクロの記録を採ると
ActiveChart.SeriesCollection(1).Points(2).Select
bだからPoints(2)と2なので、ソートして順序が変わるなら
何番目にあるか調べたら良いでしょう。
2つのシートでテスト。
標準モジュール
Sub test01()
Dim sh
For Each sh In Worksheets(Array("Sheet1", "Sheet2"))
MsgBox sh.Name
sh.Activate
x = ActiveSheet.Range("A2:A4").Find("b").Row 'bは何番目の行にあるか
MsgBox x - 1 '見出し行数までを引く
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.SeriesCollection(1).Points(x - 1).Select
Selection.Interior.ColorIndex = 3
Next
End Sub
ーーー
>("Sheet1", "Sheet2"))は自分の場合に変える、増やす。
または全シートなら、In Worksheets
シート内にグラフを挿入する方式を仮定。
グラフが1シート1個(問題にしているグラフのみ)と仮定。
一応ソート後のデータでグラフを描くとか、描いたあと(自動で)順序が反映されていると仮定。
    • good
    • 0

1つの系列の色でも、系列の中の1つの要素の色でも


マクロで記録したコードを参考にすれば簡単に変えられる
ので、うまくいかないとだけ言われてもやり方が悪いんでしょ
としかいえない。

どんなコードを書いて、どこのコードでどんなエラーが出るとか、
想定した結果は○○なのに、結果が××だとか、
具体的に書いてないと、宿題や課題の丸投げと区別できません。
丸投げして社会問題起こすような人が出てきちゃったので、
安心して回答できるような質問内容に変更して欲しいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!