エクセルのグラフの数値を16進数で表示するには


はち  2004-03-11 19:26:42  No: 82563  IP: [192.*.*.*]

お世話になっております。

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

編集    削除
はち  2004-03-11 20:10:47  No: 82564  IP: [192.*.*.*]

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軸が消えてしまいます。

編集    削除
はち  2004-03-11 20:25:46  No: 82565  IP: [192.*.*.*]

質問がごっちゃになってしまいました。
とりあえずソースを下記のようにしてみました。
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

編集    削除
はち  2004-03-11 22:21:24  No: 82566  IP: [192.*.*.*]

X軸の間隔を数値通りにあけたい件は
      .SeriesCollection(1).ChartType = xlXYScatterLines
      .SeriesCollection(2).ChartType = xlXYScatterLines

      .SeriesCollection(2).ChartType = xlXYScatterLines
      .SeriesCollection(1).ChartType = xlXYScatterLines
にしたら解決しました。

質問が混同してしまい申し訳ありません。
上記については無視してください。

以下はX軸を16進にする質問でお願いします。
どなたかご教授お願いいたします。

編集    削除
マルチ  2004-03-12 04:38:20  No: 82567  IP: [192.*.*.*]

マルチポストの気配が濃厚

編集    削除
はち  2004-03-12 18:28:50  No: 82568  IP: [192.*.*.*]

返信ありがとうございます。

マルチポストとは何でしょうか?
と思って調べました。

同じ内容を複数の異なる掲示板に書いてはいけないのですね。
申し訳ありませんでした。

編集    削除