- ベストアンサー
積み上げグラフ 系列ごとの自動塗り分け
- 現在、オフィス2003で業務の時刻表を作成しています。写真(左上)のように業務内容と所要時間ような表があり、(右上)のようなグラフにして輸送の部分だけを色付き、他を白色で塗りわけしています。しかし(左下)のように、順番が1行でも変わると塗り分もずれてしまます。現在、この塗り分けを自動化するためにマクロやVBAなどを考えていて、以下のようなVBAを作り実行をさせましたが、思うように表示されません。何かよい方法は(VBAやマクロなども踏まえて)ありますでしょうか? ご教授宜しくお願いします。
- 積み上げグラフの系列ごとに自動的に色を塗り分ける方法を探しています。現在、オフィス2003を使用して業務の時刻表を作成しています。写真のような表をグラフに変換し、輸送の部分だけを色付き、他を白色で塗りわけています。しかし、系列の順番が変わると色の塗り分けもずれてしまいます。この問題を解決するために、マクロやVBAを使用して自動化する方法を模索していますが、うまく表示されません。どのような方法を使えば塗り分けを正確に行うことができるでしょうか?
- 積み上げグラフの系列ごとに自動的に色を塗り分ける方法を探しています。現在、オフィス2003を使用して業務の時刻表を作成していますが、系列の順番が変わると色の塗り分けがずれてしまいます。この問題を解決するために、マクロやVBAを使用して塗り分けを自動化しようとしていますが、思うように表示されません。皆さんには、この問題を解決するための良い方法があるでしょうか?VBAやマクロなどを組み合わせることで、正確な塗り分けを実現する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
★1の行で、Split(scname, " ")では配列になるだけです。 提示例ではSplitする必要は無いと思います。 Splitする必要があるなら Split(scname, " ")(0) とか番号を付けて"輸送"の部分を取り出す必要があります。 colidx = 0 With ActiveChart For i = 1 To .SeriesCollection.Count scname = .SeriesCollection(i).Name 'Select Case Split(scname, " ") '---★1 Select Case scname Case "輸送": colidx = 4 '---白なら2 End Select If colidx <> 0 Then '---場合分けする .SeriesCollection(i).Interior.ColorIndex = colidx colidx = 0 '---初期化する End If Next End With Select Case を使わないでも十分だと思います。 colidx = 4 With ActiveChart For i = 1 To .SeriesCollection.Count scname = .SeriesCollection(i).Name If scname = "輸送" Then .SeriesCollection(i).Interior.ColorIndex = colidx End If Next End With あと線の色がどうなるか未確認です。
お礼
思い通りの動作が出来ました! まだまだ勉強不足なので、いろいろ覚えたいと思います。 本当にありがとうございましたm(__)m