VBAでグラフのX軸を変更する方法

このQ&Aのポイント
  • VBAを使用してA列の日付をX軸に設定したグラフを作成する方法について教えてください。
  • 現在のVBAのソースコードでは、H列の値をグラフ化することができますが、X軸の日付を設定する方法がわかりません。
  • 以下のVBAコードを使用して、新しいグラフを作成し、H列のデータをグラフ化することができます。しかし、X軸の日付を設定する方法についてアドバイスをお願いします。
回答を見る
  • ベストアンサー

VBA グラフX軸の変更

A列:X軸(日付) H列:Y軸(値) といったようなグラフを作成するにはどのようなソースで組めばよいのでしょうか? 現在は以下のようなソースまで組めます。 あとは、A列の日付をX軸に設定するだけなのですが、コーディングがわかりません。 --------------------------------------------------------------- Dim chart1 As Chart Set chart1 = Charts.Add 'H列グラフ化 chart1.SetSourceData Worksheets("Sheet1").Range(Cells(ROWINI, COLRUI), Cells(iend, COLRUI)) chart1.ChartType = xlLineStacked chart1.HasLegend = False --------------------------------------------------------------- どなたかアドバイスいただければ幸いです。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>あとは、A列の日付をX軸に設定するだけ... この手作業を[マクロの記録]すればある程度は判ります。 >chart1.SetSourceData Worksheets("Sheet1").Range(Cells(ROWINI, COLRUI), Cells(iend, COLRUI)) これを With Worksheets("Sheet1")   chart1.SetSourceData .Range(.Cells(ROWINI, COLRUI), .Cells(iend, COLRUI))   chart1.SeriesCollection(1).XValues = .Range(.Cells(ROWINI, 1), .Cells(iend, 1)) End With こんな感じに変更すれば良いです。 .Cells(ROWINI, COLRUI)が項目名だったら、.Cells(ROWINI, 1)は.Cells(ROWINI + 1, 1)としたほうが良いかも。 もしくは、最初にグラフ元範囲をRange型変数にSetします。 Dim rng As Range With Worksheets("Sheet1")   With .Range(.Cells(ROWINI, COLRUI), .Cells(iend, COLRUI))     Set rng = Union(.Cells, .Offset(, -7))   End With End With With Charts.Add   .ChartType = xlLineStacked   .SetSourceData rng   .HasLegend = False End With Set rng = Nothing こんな感じ。

kabureera
質問者

お礼

おかげで解決しました。ありがとうございました。

関連するQ&A

  • VBAでのグラフ作成について質問です。

    VBAでのグラフ作成について質問です。 Sheet1のA2:A10にx軸の値、Sheet1のD2:D10にy軸の値を設定した折れ線付き散布図を作成したいと思い、以下のようなマクロを組みました。 Sub Test() Dim chart1 As Chart Set chart1 = Charts.Add chart1.SetSourceData Worksheets("Sheet1").Range("A2:A10, D2:D10") chart1.ChartType = xlXYScatterLines End Sub 実行してみると、x軸に設定したセルがy軸の値になってしまい、 xの値が空欄の2つの折れ線グラフが現れてしまいます。 A2:A10をx軸の値に、D2:D10をy軸の値にしてグラフを作成するには上記のマクロをどのように変更すればよいのでしょうか?

  • エクセルのグラフのマクロでエラーが出てしまう

    グラフのマクロで Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("個人名シート").Range(.Cells(i, 4), .Cells(i, j - 1)), PlotBy _ :=xlRows X列項目範囲 = Range(.Cells(5, 4), .Cells(5, j - 1)) ActiveChart.SeriesCollection(1).XValues = X列項目範囲 ですが、X列項目範囲が1列だけ(4と変数j-1が同じ)だと最終行で 「実行時エラー'1004'; Series クラスの XValues プロパティを設定出来ません。」と出て しまいます。どなたかご教授下さい

  • Excel VBAでのグラフ

    エクセルのVBAを用いてプログラムを書いているのですが、どうしてもわからないことがあるので教えて下さい。 あるデータの時間経過(推移)の折れ線グラフを自動的にチャートシートに作図させたのですが、X軸に日付の目盛りを表示させ忘れてしまい、X軸に日付の目盛りを表示させるようにマクロを記録し、それを基に手直しをして追加プログラムを書いているのですがうまく行きません。というのは、X軸に日付の目盛りを表示させることはできたのですが、それに伴い、チャートの形が変わってしまうのです。グラフの種類は折れ線でサインカーブの様なスムーズな線が角張ったゴツゴツした感じの線になってしまいます。これってバグでしょうか? 具体的なプログラムは、Range(cells(50, 2), cells(150, 5))のデータでグラフを作成し、その後、Range(cells(50, 1), cells(150,1))の日付データをX軸に設定するといった感じで組んでいます。グラフの表示形式を変えずに、X軸の目盛りラベルのみを変更(表示)させるにはどのようにすれば良いでしょうか

  • VBAで散布図を作成したのですが・・・

    VBAで散布図を作成したいのですがうまくいかないで困っています。 この散布図はA行とB行をそれぞれ軸として指定しているのですがうまくX軸、Y軸に指定されず2本のグラフが表示されてしまいます。 また範囲指定をC1を変数としてA1からB○まで取りたいのですが最初の範囲指定はうまくいったのですが最後の行の指定がうまくいかずエラーになってしまいます。 (○は"C1の値+4"にしたいのです。) よろしければ何かヒントでもいいので教えていただけないでしょうか?よろしくお願いします。 (私が書いたVBA↓) Sub chart1() Dim sh1 As Worksheet Set sh1 = Worksheets("Sheet1") Dim i As Integer i = Range("C1").Value + 4 Range(Cells(1, 1), Cells(i, 2)).Select Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(1, 1), Cells(i, 2))

  • エクセル2003のvba

    エクセル2003のvbaについて質問です 以下のようなマクロを作成したのですが Chart.SetSourceData メソッドのSheets(1)をマクロを実行した時点のアクティブシートにする方法を教えてください。 Sub グラフ() Charts.Add ActiveChart.ChartType = xlXYScatterLinesNoMarkers ActiveChart.SetSourceData Source:=Sheets(1).Range("n1:n100,q1:q100"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart.Axes(xlValue) .HasMajorGridlines = False End With ActiveChart.HasLegend = False end sub

  • グラフの設定方法を教えて下さい

    株価グラフを、セル範囲に合わせて横に3個並べて表示させています。 同時に凡例非表示などの条件を設定していますが  1.ローソクの幅(太さ)を広くしたい  2.背景を着色したい この2つの設定が出来ません。何回か挑戦しましたがエラーの壁にはじき飛ばされて 困っています。是非、教えて下さい。 (Win7、エクセル2010) For I = 1 To 3 With ActiveSheet.ChartObjects.Add(Left:=Cells((I - 1) * 4 + 1).Left, _ Top:=Cells(3, 1).Top, Width:=xSize(2), Height:=ySize(2)) With .Chart .SetSourceData Source:=GFDB(4, I), PlotBy:=xlColumns .ChartType = xlStockOHLC '-------------株価グラフ .HasLegend = False '---------------------凡例非表示 .HasAxis(xlValue) = False '-------------Y軸(数値軸)非表示 .HasAxis(xlCategory) = False '---------X軸(項目軸)非表示 End With End With Next I

  • グラフ作成

    グラフ作成のマクロを作りたくて、マクロの記憶を用いて試してみたのですが、うまくいかないので、もしよろしければおしえてください。 選択範囲をアルファベットを用いたものではなく、cells(k,i)で表したいと思っています。 <マクロ> Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("元データ").Range( _ "A1:B1,A927:B987,Y1:Z1,Y927:Z987"), PlotBy:=xlColumns ’←このグラフ範囲をcells(,)の形式にしたい。 ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" どうぞよろしくお願いします。

  • Excel VBAでグラフ作成。A,C列をx値, B,D列をy値にした複数プロット

    ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。 Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170) With chartObj.Chart .ChartType = xlXYScatterLines .SetSourceData Worksheets(1).Range("A1:F10"), _ PlotBy:=xlColumns .HasLegend = False End With 上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。 以下のようにするにはどうすればよろしいでしょうか。 第一のプロットはx値をA1:A10, y値をB1:B10としてグラフを作成します。次にこのグラフにx値をC1:C10, y値をD1:D10とした第二のプロットを追加、同様に第三はx値をE1:E10, y値をF1:F10としてプロットを追加したグラフを作成したいのですが、このようなグラフはVBAで作成可能でしょうか。 本番のグラフは行数と列数はいろいろな場合があるので、行数と列数のパラメータに任意の値を代入し、Forループで様々な形態に対応できるものを作りたいと考えています。

  • 新しいグラフを作成すると、既存グラフが新しいグラフと同一になってしまう。

    Excel2003のVBAにて次のマクロを作成し、実行したところ、 新しいグラフを作成すると、既存グラフが新しいグラフと同一になってしまいます。 グラフは月度毎に作成します。 1月度のグラフを作成すると、 11月度のグラフ・12月度のグラフが、1月度のグラフと同じものになってしまいます。 マクロ作成時には、グラフ要素データの変化が小さく気が付かなかったのですが、グラフ要素データの変化が大きくなった時点で気が付きました。 解決方法をご存じの方、是非ともご教授願います。 'A:グラフを作成するシートの番号 'Sheets("Positions"):グラフを作成する位置データ保管庫 'L,T,W,H:グラフの位置データ(グラフを作成する都度指定) 'E:グラフ要素仕訳標 'F:作成したグラフの名前の保管場所標(グラフ要素変更時にグラフを更新するため)   Sheets(A).Select NN = Sheets(A).Name With Sheets(A).ChartObjects.Add(L, T, W, H)'L .Chart.ChartType = xlDoughnut If E = 0 Then .Chart.SetSourceData Source:=Sheets("Positions").Range("Q1:Q11"), PlotBy:=xlColumns Else .Chart.SetSourceData Source:=Sheets("Positions").Range("R1:R11"), PlotBy:=xlColumns End If .Chart.Location Where:=xlLocationAsObject, Name:=NN .Chart.HasTitle = False .Chart.HasLegend = False .Chart.ChartArea.Border.LineStyle = 0 .Chart.ChartArea.Interior.ColorIndex = xlNone .Chart.PlotArea.Border.LineStyle = xlNone .Chart.PlotArea.Interior.ColorIndex = xlNone End With R = Sheets(A).ChartObjects.Count Sheets("Positions").Cells(F, 3) = Sheets(A).ChartObjects(R).Name

  • VBA グラフを複数作成する場合

    マクロにてグラフを複数作成しようと考えています しかし、ループを使用してグラフを作成すると 1つ以上の場合エラーになってしまい作成できません どのように作成したらよいのでしょうか? 2つ目以降のグラフObjectの名前が重なるからエラーになるとか、そういう部分での問題でしょうか? ------------------------------------- Sub Graph   For i = 1 To 2 'source_cnt   Call Make_Graph(引数)   Next End Sub ------------------------------------- Sub Make_Graph(引数) With ActiveSheet.ChartObjects.Add( _ Left:=Range(***).Left, _ Top:=Range(***).Top, _ Width:=Range(***).Width, _ Height:=Range(***).Height) .Chart.ChartType = xlRadar .Chart.SetSourceData Source:= Range(***), PlotBy:=xlColumns .Chart.Location Where:=xlLocationAsObject, Name:=WorkSheet.Name .Chart.HasLegend = False End With -------------------------------------

専門家に質問してみよう