お世話になっております。
Win2000、エクセル2000、VBA(エクセルについてるやつ)
グラフの数値を16進で表示したいのですが、
どのようにしたらいいのか検討もつきません。
どなたかご教授願います。
Private Sub メイン()
Y1 = "10,50,60,20"
Y2 = "50,10,100,60"
X = "1,2,5,10" '←10をA(16進数)にしたい!
Call DrawLineGraph(LineValue)
End Sub
Private Sub DrawLineGraph( X1 As String, Y1 As String, Y2 As String )
Dim myChartObject As Excel.ChartObject
Set myChartObject = ActiveSheet.ChartObjects.Add(160, 80, 320, 200)
myChartObject.Name = "NewChart01" '初期値のままでもOK
With myChartObject.Chart
'チャートを設定する前には、あらかじめデータをセットしておく必要があります。
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = X
.SeriesCollection(1).Values = Y1
.SeriesCollection.NewSeries
.SeriesCollection(2).XValues = X
.SeriesCollection(2).Values = Y2
.ApplyCustomType xlBuiltIn, "2 軸上の折れ線"
'タイトル
.HasTitle = True
.ChartTitle.Characters.Text = "TITLE"
'X軸1
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X"
'Y軸1
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y1"
'Y軸2
.Axes(xlValue, xlSecondary).HasTitle = True
.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text = "Y2"
End With
Set myChartObject = Nothing
End Sub
Y1 Y2
60 ┃ ・ ┃120
┃ ┃
50 ┃ ・ * ┃100
┃ ┃
40 ┃ ┃80
┃ ┃
30 ┃ *┃60
┃ * ┃
20 ┃ ・┃40
┃ ┃
10 ┃ ・ ┃20
┃ * ┃
┗━━━━━━━━━━━━━━━━━━━━┛
1 2 3 4 5 6 7 8 9 A
これを点を結んだ折れ線グラフとして、こんな感じのものを作成しようとしています。
X軸は必ずしも1〜Aまで全て表示されていなくてもよいのですが、
X軸が数値通りに間隔をあけたいです。
上記マクロを実行後、
グラフを右クリックでグラフの種類を
データポイントを折れ線でつないだ散布図
にすると実現できますが、
それをマクロに記録して実行してもY2軸が消えてしまいます。
質問がごっちゃになってしまいました。
とりあえずソースを下記のようにしてみました。
X軸の未解決ですが、問題は少しだけ良くなりました。
16進数表示に関してはまださっぱりわかりません。
'2軸上の折れ線図の設定値用構造体
Private Type LINE_VALUE
X1 As String 'X軸のデータ(範囲を指定)
X2 As String 'X軸のデータ(範囲を指定)
Y1 As String 'Y軸(左)のデータ(範囲を指定)
Y2 As String 'Y軸(右)のデータ(範囲を指定)
End Type
Private Sub メイン()
'2軸上の折れ線図の設定値
Dim LineValue As LINE_VALUE
LineValue.Y1 = "10,50,60,20"
LineValue.X1 = "1,2,4,5"
LineValue.Y2 = "50,10,100,60"
LineValue.X2 = "1,2,4,5"
Call DrawLineGraph(LineValue)
End Sub
'グラフ表示
Private Sub DrawLineGraph(LineValue As LINE_VALUE)
On Error GoTo ErrorTrap
Dim myChartObject As Excel.ChartObject
Set myChartObject = ActiveSheet.ChartObjects.Add(160, 80, 320, 200)
myChartObject.Name = "NewChart01" '初期値のままでもOK
With myChartObject.Chart
'チャートを設定する前には、あらかじめデータをセットしておく必要があります。
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = LineValue.X1
.SeriesCollection(1).Values = LineValue.Y1
.SeriesCollection.NewSeries
.SeriesCollection(2).XValues = LineValue.X2
.SeriesCollection(2).Values = LineValue.Y2
.ApplyCustomType xlBuiltIn, "2 軸上の折れ線"
'↑これをしないとY軸2のText設定でエラー
'タイトル
.HasTitle = True
.ChartTitle.Characters.Text = "TITLE"
'X軸1
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X"
'Y軸1
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y1"
'Y軸2
.Axes(xlValue, xlSecondary).HasTitle = True
.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text = "Y2"
.SeriesCollection(1).ChartType = xlXYScatterLines
.SeriesCollection(2).ChartType = xlXYScatterLines
'.ChartType = xlXYScatterLines '←これではY軸(右)が消えてしまう。
End With
Set myChartObject = Nothing
Exit Sub
ErrorTrap:
End Sub
X軸の間隔を数値通りにあけたい件は
.SeriesCollection(1).ChartType = xlXYScatterLines
.SeriesCollection(2).ChartType = xlXYScatterLines
を
.SeriesCollection(2).ChartType = xlXYScatterLines
.SeriesCollection(1).ChartType = xlXYScatterLines
にしたら解決しました。
質問が混同してしまい申し訳ありません。
上記については無視してください。
以下はX軸を16進にする質問でお願いします。
どなたかご教授お願いいたします。
マルチポストの気配が濃厚
編集 削除返信ありがとうございます。
マルチポストとは何でしょうか?
と思って調べました。
同じ内容を複数の異なる掲示板に書いてはいけないのですね。
申し訳ありませんでした。