前提・実現したいこと
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です。
※大元のマクロは本当はもっといろいろ面倒な記述があるのですが、今回投稿に当たり要点を絞って再構成しております(それでも上述の状態で問題は発生しております)。あらかじめご容赦ください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/25 11:19
2020/01/26 08:16