質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

3120閲覧

Excel vba グラフにNewseriesで系列を追加する際に系列名が設定できない

glam0337_k

総合スコア42

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/01/25 09:31

前提・実現したいこと

Excel上にて、シート「結果」にある値を元にシート「図」にある「グラフ 1」(散布図)に系列を追加するマクロを目指して作成しています。

関数「kyokusen」を実行後、系列名、系列の範囲(と系列の色)をsetして、関数「graph_series1」に値を渡し、newseriesにてそれぞれを備えた新たな系列を「グラフ 1」に追加しています。

発生している問題・エラーメッセージ

系列の追加そのものは成功しています。

グラフ系列名を「kname」にて設定しているのですが、マクロ実行後、反映されません。より具体的には「データ ソースの選択」ウィンドウ中の系列名としては出てくるのですが、「編集」ボタンを押して「系列の編集」ウィンドウ上の「系列名」に反映されません。ここが空欄になります。この状態を解消できません。

ただ、このファイルを保存して終了後、もう一度開くと、「系列名」に「="独自曲線"」のように文字列として設定されています。
なお、グラフの追加した系列を選択した際に現れる計算式は「=SERIES("独自曲線",結果!$A$2:$A$12,結果!$B$2:$B$12,1)」となっています。

イメージ説明
イメージ説明
イメージ説明

該当のソースコード

以下はModule1にて記述しています。

vba

1Sub kyokusen() 2 3'グラフ系列名 4Dim Kname As Range 5 6'グラフ参照範囲 7Dim nx As Range 8Dim ny As Range 9 10'系列の色(青) 11Dim mycolor As Long: mycolor = RGB(0, 0, 255) 12 13Dim CH1 As Chart: Set CH1 = Worksheets("図").ChartObjects("グラフ 1").Chart 14Dim HQ As Worksheet: Set HQ = Worksheets("結果") 15 16CH1.ChartArea.ClearContents 17 18 With HQ 19 Set Kname = .Range("D1") 20 21 Set nx = .Range("A2:A12") 22 Set ny = .Range("B2:B12") 23 24 Call graph_series1(CH1, Kname, nx, ny, mycolor) 25 End With 26 27End Sub 28 29Sub graph_series1(CH As Chart, Kname As Range, nx As Range, ny As Range, mycolor As Long) 30 31With CH.SeriesCollection.NewSeries 32 33 .Name = Kname 34 .XValues = nx 35 .Values = ny 36 37 '線の幅:1pt マーカー:なし 38 .MarkerStyle = xlMarkerStyleNone 39 .Format.Line.ForeColor.RGB = mycolor 40 .Format.Line.Weight = 1 41 .Format.Line.DashStyle = msoLineSolid 42End With 43 44End Sub 45

試したこと

Knameを文字列(string型)にしてみましたが改善は見られず。
graph_series1の中のKnameを直接編集し、セルを参照してみましたが改善は見られず。
数式を入力してみましたが改善は見られず。
(画像にはありませんが)凡例を表示してみたところ、系列名が表示されました。

rangeでの参照ではなく数式入力が必要?そもそも個別の系列名の設定は「.name」ではない?個人で調べる限りではvbaのグラフに関しては、ネット上では情報が錯綜していたりSetSourceDataでの説明だったりして、どうにもよくわからなくなってしまいました。

補足情報(FW/ツールのバージョンなど)

発生した環境はWindows7+Excel2013、及びWindows8.1+Excel2016です。

※大元のマクロは本当はもっといろいろ面倒な記述があるのですが、今回投稿に当たり要点を絞って再構成しております(それでも上述の状態で問題は発生しております)。あらかじめご容赦ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ああああ、編集の画面で系列名が上手く出ないという話でしたか。
すいません。画面に出てこないと勘違いしてました。

ExcelVBA

1With CH.SeriesCollection.NewSeries 2 3 .Name = "=" & Kname.Address(, , , True)

としてください。

投稿2020/01/25 10:28

編集2020/01/25 13:02
mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

glam0337_k

2020/01/25 11:19

回答ありがとうございます。新規ブックにコピペで改めて作ってみましたが変わらず。 提示された行を追加しても状況に変化はありませんでした。 今使っているパソコンともう一台で同じ症状が出ているので書き間違えてるのかと思ったんですが… ともあれ、記述的には問題ないと言う事なのでしょうか。 確かに「系列名が表示されない」というだけではあります。
glam0337_k

2020/01/26 08:16

「系列の編集」ウィンドウにて系列名に出てきました! ありがとうございます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問