• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのVBAについて)

エクセルのVBAで散布図の色を変更する方法

このQ&Aのポイント
  • エクセル2007で散布図の色を変えるためにはVBAを使用する必要があります。具体的な手順としては、折れ線グラフを選択し、データ系列の書式設定を行い、マーカーの色や線の色を変更します。そして、変更を適用して記録を終了します。
  • 散布図に関するVBAの情報はあまりなく、特にエクセル2007においてはデータ系列の書式設定を行う方法が少ないです。しかし、上記の手順を経てVBAを記録することで、任意の散布図の色を変えることができます。
  • エクセル2007で散布図の色を変えるためにはVBAを活用しましょう。折れ線グラフを選択し、データ系列の書式設定で色を変更し、変更を適用して記録を終了します。VBAを使用することで、散布図の色を自在にカスタマイズすることができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

#1,3です。 #3補足への返信です。 Sub Re8908589___()   With ActiveChart.SeriesCollection(1)     .MarkerStyle = xlMarkerStyleCircle     .MarkerSize = 7     .Border.Color = RGB(0, 0, 0)     .MarkerBackgroundColor = RGB(255, 255, 255)     .MarkerForegroundColor = RGB(0, 0, 0)     .Format.Line.DashStyle = msoLineSolid   End With End Sub こんな感じでしょうか? realbeatin 様 迅速な返信ありがとうございます。 > オブジェクトブラウザ、ヘルプを使えば書けるとの助言を頂いたので下記のように書いてみました。 > ちなみにDashStyle 以外は...思い通りに動作させることが出来ました。 ご苦労様です。大変だったでしょうけれど、皆そうやって力を付けているんだと思います。 > Dim ... As~の宣言?についてはまだ慣れていないので使わずに書きました。 それでいいです。 > しかし、実行時エラー 424 オブジェクトが必要です。となってしまい、動作させることができません。 > 【線のスタイル(実線、点線など】の場所が原因となっているのはわかっているのですが、 > ネットで調べても今一オブジェクトというものがどれを指しているのかわからない状態です。 > LineFormat.DashStyle.msoLineSolidLineFormat.DashStyle.msoLineSolid これは簡単には解らないと思いますから、質問が残るのも仕方ないですね。 お疲れ様でした。

Elba_1814
質問者

お礼

『=』を使えばよかったのですね。 まだ勉強し始めたばかりで、全く気付きませんでした。 こちらの回答で線のスタイルも無事動作しました。 他にもいくつかお聞きしたいことがありますので、聞きたいポイントがまとまり次第質問させていただきます。 よろしければまたご教授願います。 ありがとうございました。

その他の回答 (3)

回答No.3

こんにちは、#1です。 補足、コメント拝見しました。 > あとは、マーカーの種類(三角形、丸などの形)、マーカーのサイズ、線のスタイル(実線、点線など)の変更の仕方を教えて頂けると幸いです。 ↑この部分にだけ、実際の記述への加筆でお応えします。 引用部分は、いずれも VBAヘルプ、VBEオブジェクトブラウザ、から探したものです。 必要なプロパティを探すには、オブジェクトブラウザ、 使用できる定数を調べるのも、オブジェクトブラウザ、 プロパティ詳細を確認するのは、ヘルプ、 こんな感じで、 私だって、グラフの細かいこと一々覚えてはいませんし、 今回の処理については手作業でさえ経験したことのないものもありますが、 基本となるコードと、目的のオブジェクトさえ捉えられれば、 [マクロの記録]に頼らずとも、ある程度のことは調べることが出来るように、 VBEには補助機能が用意されています。 現実に今回の課題を詳説した書籍があるとは思えませんし、 2010環境といえども、今回[マクロの記録]が役に立ったのは、2、3カ所だけです。 #1で書いた > 以下の記述の各Withブロックの内側に > ドット"."をタイプするだけでメソッドやプロパティ等のメンバーが、 > イコール"="をタイプするだけでプロパティに応じた組込み定数の候補が、 > 入力のヒントとして表示されるような書き方にしてあります。 実際、こういう方法でプロパティや定数を見つけることもよくあります。 F1キーとF2キーと入力ヒント。 最初からうまく出来るものではありませんが、 応用する力を付ける意味で、慣れて、熟れるようにしてみて下さいね。 勿論、それでも困ることがあれば、また質問にしてみて下さい。 Sub Re8908589追加オーダー() Dim oSeries As Series Dim oFillFormat As FillFormat Dim oLineFormat As LineFormat   With ActiveSheet.ChartObjects("グラフ 1").Chart ' ★グラフ名を文字列で指定     Set oSeries = .SeriesCollection(1) ' ★データ系列を番号で指定     With oSeries       .MarkerStyle = xlMarkerStyleTriangle ' 【マーカーの種類(三角形、丸などの形)】 ' ' |以下引用         マーカーのスタイルを設定します。 ' ' |             使用できる定数は、次に示す XlMarkerStyle クラスの定数のいずれかです ' ' |             xlMarkerStyleAutomatic 自動マーカー ' ' |             xlMarkerStyleCircle 円形のマーカー ' ' |             xlMarkerStyleDash 長い棒のマーカー ' ' |             xlMarkerStyleDiamond ひし形のマーカー ' ' |             xlMarkerStyleDot 短い棒のマーカー ' ' |             xlMarkerStyleNone マーカーなし ' ' |             xlMarkerStylePicture 画像マーカー ' ' |             xlMarkerStylePlus 正符号 (+) 付きの四角形のマーカー ' ' |             xlMarkerStyleSquare 四角形のマーカー ' ' |             xlMarkerStyleStar アスタリスク (*) 付きの四角形のマーカー ' ' |             xlMarkerStyleTriangle 三角形のマーカー ' ' |以上引用         xlMarkerStyleX X 印付きの四角形のマーカー       .MarkerSize = 2 ' 【マーカーのサイズ】 ' ' |以下引用         マーカーのサイズをポイント単位で設定します ' ' |             使用できる値の範囲は、2 ~ 72 です ' ' |             (ポイント: 印刷する文字のサイズ (高さ) を指定する基本単位 ' ' |以上引用         1 ポイントは、約 0.0353 cm (1/72 インチ) です。) '      .Smooth = True       With .Format         Set oFillFormat = .Fill         With oFillFormat '          .Visible = msoTrue '          .Transparency = 0           .ForeColor.RGB = RGB(255, 0, 0) ' マーカーの色を赤にする場合 '          .Solid         End With         Set oLineFormat = .Line         With oLineFormat '          .Visible = msoTrue '          .Transparency = 0           .ForeColor.RGB = RGB(255, 0, 0) ' 線の色を赤にする場合           .Style = msoLineSingle ' 線のスタイルを単線にする場合 '          .Weight = 1           .DashStyle = msoLineSquareDot 'msoLineSolid ' 【線のスタイル(実線、点線など】 ' ' |以下引用         指定された線の点線のスタイルを設定します ' ' |以上引用         使用できる定数は、次に示す MsoLineDashStyle クラスの定数のいずれかです ' ' 以下筆者まとめ       msoLineDash 破線 ' '               msoLineDashDot 一点鎖線 ' '               msoLineDashDotDot 二点鎖線 ' '               msoLineDashStyleMixed ' '               msoLineLongDash 長破線 ' '               msoLineLongDashDot 長鎖線 ' '               msoLineLongDashDotDot 長二点鎖線 ' '               msoLineRoundDot ? ' '               msoLineSolid 実線 ' '               msoLineSquareDot ? ' '               msoLineSysDash 点線(角) ' '               msoLineSysDashDot ? ' '               msoLineSysDot 点線(丸)         End With       End With     End With   End With End Sub

Elba_1814
質問者

補足

realbeatin 様 迅速な返信ありがとうございます。 オブジェクトブラウザ、ヘルプを使えば書けるとの助言を頂いたので下記のように書いてみました。 Dim ... As~の宣言?についてはまだ慣れていないので使わずに書きました。 しかし、実行時エラー 424 オブジェクトが必要です。となってしまい、動作させることができません。 【線のスタイル(実線、点線など】の場所が原因となっているのはわかっているのですが、ネットで調べても今一オブジェクトというものがどれを指しているのかわからない状態です。 この点ご教授頂けると幸いです。 ちなみにDashStyle 以外は、おかげ様で思い通りに動作させることが出来ました。 Sub Re8908589() With ActiveChart.SeriesCollection(1) .MarkerStyle = xlCircle .MarkerSize = 7 .Border.Color = RGB(0, 0, 0) .MarkerBackgroundColor = RGB(255, 255, 255) .MarkerForegroundColor = RGB(0, 0, 0) LineFormat.DashStyle.msoLineSolid End With End Sub

  • Pcworks
  • ベストアンサー率35% (64/179)
回答No.2

Excelのバージョンによってマクロの記録に違いがあります、エクセル2007のマクロの記録では表題の項目は記録されますが内容(フォーマットの内容)は記録できません、Excel2003やExcel2010以降ではできます。 折れ線グラフの線の書式設定ですが書式設定をモジュールに作ると対象のグラフをアクティブにしてモジュール化したマクロを実行すれば希望通りの書式に変更設定できます。 Sub DrawChart() With ActiveChart.SeriesCollection(1) .Border.Weight = 1 'xlThin      線の太さ .Border.LineStyle = xlContinuous   線種 .Border.LineStyle = 1 .Border.ColorIndex = 1        線の色 .MarkerBackgroundColorIndex = 1    マーカーの色 .MarkerForegroundColorIndex = 1    マーカーの色 .MarkerStyle = xlDiamond       マーカーの形 .Smooth = True .MarkerSize = 8 マーカーのサイズ .Shadow = False           影(True or False) End With   With ActiveChart.SeriesCollection(2)     End With With ActiveChart.SeriesCollection(3)     End With End Sub ActiveChart.SeriesCollection(1)の番号は表示する線に順番に振られるのでその数だけ書く必要があります、不要の場合でも必ず順番を守らなくてはいけません、表示したくない線でもその番号の書式をinVisibleかFalseにするか番号を飛ばしても線と番号が一致する必要があります、上記以外にも設定項目はあります。 ネットで調べれば詳しく出ていますが実際にコードを書いて自分で確認することを薦めます,記録では色をRGBで(例 255,0,0)表示しますが色番号 黒(1)白(2) 赤(3)....もできるの色番号のほうが簡単と思います。 参考になれば幸いです。

Elba_1814
質問者

補足

Pcworks 様 回答をして頂いたにも関わらず返信が遅くなってしまい申し訳ございません。 Excel2003やExcel2010以降では内容(フォーマットの内容)の記録ができるのですね。 よりによって私が使っている2007だけが使えないのは不便ですが、有意義な情報をいただき有り難うございます。 早速ですが、With ActiveChart.SeriesCollection(1)と書かれていたので、Chartを選択した後、教えて頂いたものを実行しようとしたところ構文エラーとなってしまい、実行できませんでした。 VBAに関して未熟なため何か書き換える必要がある部分がありましたら教えていただけますと助かります。 もしくはExcelのVBAについて書かれた書籍や、サイトでオススメの物がありましたらそちらで自力解決をしようと思いますので、よろしければ教えて頂けると助かります。 よろしくお願い致します。

回答No.1

具体的にどうしたいか、こちらで判りませんから、以下に挙げる例を基に、 VBAのヘルプ、VBEのオブジェクトブラウザ等を参考に応用して、 やりたいように書き上げていってください。 (添付画像からやりたい事をこちらで察するのは難しいですし、  そちらから詳細な説明を加えるのも大変だと思いますので。)   Series  データ系列   FillFormat  マーカー   LineFormat  線 各オブジェクトについては、敢えて変数とWIthフレーズを使うことで、 以下の記述の各Withブロックの内側に ドット"."をタイプするだけでメソッドやプロパティ等のメンバーが、 イコール"="をタイプするだけでプロパティに応じた組込み定数の候補が、 入力のヒントとして表示されるような書き方にしてあります。 VBEのオブジェクトブラウザを(F2キーで)表示して、 中段左側にある[クラス]と書かれたペイン(小さいウィンドウ)の中を探して、 上記の3つのキーワードを、それぞれクリックしてみて下さい。 中段右側に['Series' のメンバー]としてメソッドやプロパティが一覧できます。 またはVBAのヘルプを表示させて上記の3つのキーワードを検索してみて下さい。 Sub Re8908589() Dim oSeries As Series Dim oFillFormat As FillFormat Dim oLineFormat As LineFormat   With ActiveSheet.ChartObjects("グラフ 1").Chart ' ★グラフ名を文字列で指定     Set oSeries = .SeriesCollection(1) ' ★データ系列を番号で指定     With oSeries '      .Smooth = True       With .Format         Set oFillFormat = .Fill         With oFillFormat '          .Visible = msoTrue '          .Transparency = 0           .ForeColor.RGB = RGB(255, 0, 0) ' マーカーの色を赤にする場合 '          .Solid         End With         Set oLineFormat = .Line         With oLineFormat '          .Visible = msoTrue '          .Transparency = 0           .ForeColor.RGB = RGB(255, 0, 0) ' 線の色を赤にする場合           .Style = msoLineSingle ' 線のスタイルを単線にする場合 '          .Weight = 1 '          .DashStyle = msoLineSolid         End With       End With     End With   End With End Sub

Elba_1814
質問者

補足

realbeatin 様  回答をして頂いたにも関わらず返信が遅くなってしまい申し訳ございません。教えて頂いたものを実行したところマーカーと線の色の変更が同時に出来ました。 あとは、マーカーの種類(三角形、丸などの形)、マーカーのサイズ、線のスタイル(実線、点線など)の変更の仕方を教えて頂けると幸いです。 もしくはExcelのVBAについて書かれた書籍や、サイトでオススメの物がありましたらそちらで自力解決をしようと思いますので、よろしければ教えて頂けると助かります。 よろしくお願い致します。

関連するQ&A