• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グラフの自動描画を行うときに系列名を非表示に)

グラフの自動描画で系列名を非表示にする方法

xls88の回答

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

グラフ挿入直後に操作しているのですから ActiveSheetのChartObjectsの引数を1と決め打ちするより ★1、ActiveSheetのChartObjectsのCount値を引数にした方が間違いがありません。 オブジェクト変数に入れる方法もありますが次ステップとして後で研究してください。 >・系列名は不要 ★2、Nameプロパティで設定 >・データラベルが「0(ゼロ)」の場合は表示しない ★3、NumberFormatLocalプロパティで表示形式を設定 0以下の場合は、"[<=0]""""" >・縦軸、横軸のフォントサイズを指定したい ★4、TickLabelsオブジェクトのFont.Sizeプロパティで設定 With ActiveSheet With .ChartObjects(.ChartObjects.Count).Chart '★1 For i = 1 To .SeriesCollection.Count With .SeriesCollection(i) .Name = "" '★2 .HasDataLabels = True .DataLabels.NumberFormatLocal = "[=0]""""" '★3 End With Next i With .Axes(xlCategory, xlPrimary) '---主軸項目軸 .TickLabels.Font.Size = 18 '---軸目盛ラベル '★4 End With With .Axes(xlValue, xlPrimary) '---主軸数値軸 .TickLabels.Font.Size = 18 '---軸目盛ラベル '★4 End With End With End With

hana-taku
質問者

お礼

このたびも、大変お世話になりました。 自分が思っていたことが、ご教示いただいたものでできるようになりました。 このことをきっかけに、グラフの大きさの変更もなんとかできるようになり非常に喜んでおります。 エクセルでの繰り返し作業では、マクロが非常に有効なのでこれからも牛歩くらいですが前に進んで行きたいと思います。 また是非とも、わからないことが多々あると思いますのでご教示をお願いします。 本当に助かりました。

関連するQ&A

  • 自動グラフ作成マクロの作り方に関してアドバイスを下さい

    Sub Macro4() For i = 4 To 8 Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=zero!R13C1:R1013C1" ActiveChart.SeriesCollection(1).Values = "=zero!R13C" & i & ":R1013C" & i ActiveChart.SeriesCollection(1).Name = "=zero!R12C" & i ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x axis" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y axis" End With Next End Sub これはzeroというシートから自動的に複数のグラフを作成するマクロなのですが、 これを現在選択しているシートにするためにはどうすれば良いのでしょうか? それと作成するグラフの名称を自分で設定したセルの内容にしたいのですが、 どうすれば良いのでしょうか? よろしくお願い致します。

  • 任意にデータの範囲を選択し、グラフを描画したい

    質問を閲覧していただきありがとうございます。 できればみなさんのお力を貸していただきたいことがあり、質問しました。 以下にマクロ作成に用いたプログラムの仕様とコードを貼りますので、ご指摘等いただけましたら幸いです。 まず、今回のマクロの目的は ・既に存在するエクセルデータから、x軸、y軸のデータ列の長さに応じたグラフを描画するVBプログラムを書く事 です。 ・可能ならば、既存のふたつのグラフを結合したものを新しく表示する ※データシートの画像は添付しましたのでご覧ください。 以上のふたつとなります。 理想形としては、 A2 ~ A1025までをx軸のデータ、B2~B1025までの実データ値としたグラフAを一つ D2 ~ E1025までをx軸のデータ、E2~E1025までの実データ値としたグラフBを一つ 上記二つのグラフを結合したグラフを一つ の3つのグラフが自動的に作成され、エクセルファイル上に表示されている といったような感じです。 私の書いたコードの問題点としては、 ・グラフAグラフBともに「x軸と実データが正しく対応していない」 →本来両方のグラフにおいてはグラフの右端まで折れ線グラフが続いているはずですが、x軸の値にして約1000の所でデータが終わってしまっています。 ・グラフBでは、D2 ~ D344, E2 ~ E344 を基にしたグラフ一つのみが描画されているはずですが、ここには何故か二つ以上の折れ線グラフがあるようにみえ、グラフB右には系列1~5までがあるように書かれています。(理想としては5個ではなく実データを示すもの一つのみ) ・ふたつのグラフの結合方法が不明 という感じです。 以下にプログラムを貼ります。 お時間ありましたら、ご指摘の程宜しくお願い致します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub グラフ描画() chart_title1 = "グラフA" chart_title2 = "グラフB" '軸のタイトル x_title = "周波数[Hz]" y_title = "パワー" ' -------------------------グラフ作成---------------------- ' グラフを描画 Dim chartObj1 As ChartObject Set chartObj1 = ActiveSheet.ChartObjects.Add(1, 1, 300, 200) With chartObj1.Chart ' データ範囲をセット .SetSourceData Source:=Range(Range("B2"), _ Cells(2, 1).End(xlDown)) ' x軸の項目軸範囲をセット .SeriesCollection(1).XValues = Range(Range("A2"), _ Cells(1, 1).End(xlDown)) ' オプションをセット .ChartType = xlXYScatterSmoothNoMarkers ' 散布図 .HasTitle = True .ChartTitle.Characters.Text = chart_title .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = x_title .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = y_title ' x軸の最大値、最小値設定 .Axes(xlCategory, xlPrimary).MinimumScale = 0 .Axes(xlCategory, xlPrimary).MaximumScale = 4500 ' y軸の最大値、最小値設定 .Axes(xlValue).MinimumScale = -10 .Axes(xlValue).MaximumScale = 3 End With Dim chartObj2 As ChartObject Set chartObj2 = ActiveSheet.ChartObjects.Add(1, 320, 300, 200) With chartObj2.Chart ' データ範囲をセット .SetSourceData Source:=Range(Range("E2"), _ Cells(2, 1).End(xlDown)) ' x軸の項目軸範囲をセット .SeriesCollection(1).XValues = Range(Range("D2"), _ Cells(1, 1).End(xlDown)) ' オプションをセット .ChartType = xlXYScatterSmoothNoMarkers ' 散布図 .HasTitle = True .ChartTitle.Characters.Text = chart_title .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = x_title .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = y_title ' x軸の最大値、最小値設定 .Axes(xlCategory, xlPrimary).MinimumScale = 0 .Axes(xlCategory, xlPrimary).MaximumScale = 4500 ' y軸の最大値、最小値設定 .Axes(xlValue).MinimumScale = -10 .Axes(xlValue).MaximumScale = 3 End With End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • Sub M()

    Sub M() Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range("A1:A289,B289").Select Range("B289").Activate Range(Selection, Selection.End(xlUp)).Select Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SetSourceData Source:=Sheets("08.31_n3_rev477_fai0_x300_y20_z"). _ Range("A1:B289"), PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "T[sec]" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "U[v]" End With Sheets("08.31_n3_rev477_fai0_x300_y20_z").Select Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range("A1:A289,C289").Select Range("C289").Activate Range(Selection, Selection.End(xlUp)).Select Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SetSourceData Source:=Sheets("08.31_n3_rev477_fai0_x300_y20_z"). _ Range("A1:A289,C1:C289"), PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "T[sec]" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "U[v]" End With End sub このプログラムなのですが、 A289をx軸 B289~IV289までがy軸 上のプログラムをIV289までまわそうとFor文を 使って繰り返そうとしていますが、うまくできません。 どのようにFor文を使ったらいいでしょうか? サンプルをお願いします。

  • エクセルグラフの軸ラベルを一括変換出来なくて困っています。

    お世話になります。 初めて投稿いたします。 VBA初心者です。エクセルグラフの軸ラベルを一括変換したいのですが、分からなくて困っています。 過去ログ、個人HPなどを参考にして、一つのグラフを選択、下記マクロを実行すれば、一つのグラフのみなら軸ラベルを変更する事が出来たのですが、ワークシート内の複数の埋め込みグラフを一発でラベル変更する場合のマクロが作成できません。 当方会社員、データをまとめる為、今回100ヶほどのグラフを一括変換したいため、どうしてもマクロ処理したいと考えています。 For Each・・・Next でループさせたいのですが、何分初心者勉強中の為、エラー多発、何方かお分かりの方、お助け下さい。 Sub 軸ラベル一括変換() With ActiveChart With .Axes(xlCategory, xlPrimary) .HasTitle = True .AxisTitle.Text = "X" End With With .Axes(xlValue, xlPrimary) .HasTitle = True .AxisTitle.Text = "y" End With End With End Sub

  • 複数のグラフを整列させて表示する方法

    現在、複数のグラフを作成するマクロを作っています(ちなみに、今日はじめてマクロを用いたグラフ作成に取り組みました)。 それぞれの行に13個のデータが入っていて(平均値と標準偏差がそれぞれ入っている)、それを用いて行ごとにグラフを作成します。 データが格納されている行はだいたい300個くらいなのですが、今のままだと300のグラフがすべて重ねられた状態で出てきます。 これを整列した状態で表示させたいのですが、どのようにすればよいのでしょうか? あと、今回はほとんど「マクロの記録」で作ったので、なんかソースが汚ないのでもう少し綺麗にならないでしょうか? 下にソースをのせておきます。よろしくお願いします。 Sub Macro6() ' ' Macro6 Macro ' ' Dim x As Long Cells(1, 1).Select x = Range(Selection, Selection.End(xlDown)).Rows.Count For i = 2 To x Range(Cells(i, 2), Cells(i, 14)).Select 'これがないと棒どうしが密着したグラフになる。 ActiveSheet.Shapes.AddChart.Select 'データの範囲を指定 ActiveChart.SetSourceData Source:=Range(Cells(i, 2), Cells(i, 14)) 'エラーバーをつける ActiveChart.ChartType = xlColumnClustered ActiveChart.SeriesCollection(1).HasErrorBars = True ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range(Cells(i, 15), Cells(i, 27)), MinusValues:=Range(Cells(i, 15), Cells(i, 27)) 'Legendを消す ActiveChart.Legend.Select Selection.Delete 'タイトルや軸ラベルの名前を変更する ActiveChart.SetElement (msoElementChartTitleAboveChart) ActiveChart.ChartTitle.Text = Cells(i, 1) ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis) ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Text = "Class" ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Font.Size = 14 ActiveChart.SetElement (msoElementPrimaryValueAxisTitleRotated) ActiveChart.Axes(xlValue, xlPrimary).axistitle.Text = "Intensity" ActiveChart.Axes(xlValue, xlPrimary).axistitle.Font.Size = 14 Next i End Sub

  • Excelでのグラフ作成用マクロについて。

    「新しいマクロを記録する」でグラフ作成用のマクロを作りました。 内容は、 1.sheet1のBC列を散布図でsheet2に出力。(4つほど別々のグラフを作成) 2.プロットエリアの拡大 3.図の位置調整・図の大きさ調整。(4つが重ならないように) というものです。 一応出来たのですが、何故か選択列を変更して(マクロ内の列選択を変更)出力・プロットエリア拡大までは出来るのですが、3が出来ません。 それで、分からないなりにマクロ内を覗いてみたところ、図の位置を調整する際に、対象となる図が ActiveSheet.Shapes("グラフ 17").IncrementLeft -177.75 などと言うように、グラフ17を参照してしまっているためにうまく動かないのだと思いました。 (そもそも、名前なんて付けていないはず・・・と思って調べていたら、どうやら「グラフウインドウ」で見ることが出来る名前を参照しているようでした。) いっそのこと、グラフをクリック・ドラッグで移動させるのではなく、出力する際に整然と並ぶように設定したいです。どうすればよいでしょう? 一応、作成したものを載せておきます。 ・1~2 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "mass" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "counts" End With ActiveChart.HasLegend = False ActiveChart.PlotArea.Select With Selection.Interior .ColorIndex = 2 .Pattern = xlSolid End With Selection.Top = 1 Selection.Width = 323 Selection.Height = 180 Selection.Left = 15 Selection.Width = 334 Selection.Height = 194 ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = 0 .MaximumScale = 50 .MinorUnitIsAuto = True .MajorUnit = 5 .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub 3. ActiveSheet.Shapes("グラフ 17").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 17").IncrementTop -105.75 End Sub

  • VBA 散布図 系列名 設定あるいは削除

    以下のように複数データ範囲を選択して、散布図を作成しており、 セルA2とB2に入力した数値からデータ範囲を設定しています。 しかし、実行すると、系列1~i以降に系列i+1~がだらだらと続いてしまいます。 系列i+1以降をを削除するか、ちゃんと1~iまで系列のみ表示させるにはどのようにしたら良いのでしょうか。 どうぞ宜しくお願い致します。 Dim i As Variant i = Range("A2").Value Dim j As Variant j = Range("B2").Value Dim k As Variant k = i Dim l As Variant l = j Dim ChartObj As ChartObject Dim ChartOne As Chart Set ChartObj = ActiveSheet.ChartObjects.Add(1260, 100, 350, 240) Set ChartOne = ChartObj.Chart With ChartOne .ChartType = xlXYScatterLines .HasTitle = True .ChartTitle.Text = Range("C3").Value .HasLegend = True .Legend.Position = xlLegendPositionRight With .Axes(xlValue, xlPrimary) .HasTitle = True .AxisTitle.Text = Range("D3").Value End With With .Axes(xlCategory, xlPrimary) .HasTitle = True .AxisTitle.Text = Range("E3").Value End With For k = 1 To i For l = 1 To j ChartOne.SeriesCollection.NewSeries ChartOne.FullSeriesCollection(k).Name = Cells(5, k + 10) ChartOne.FullSeriesCollection(k).XValues = Range(Cells(5, k + 30), Cells(4 + l, k + 30)) ChartOne.FullSeriesCollection(k).Values = Range(Cells(5, k + 50), Cells(4 + l, k + 50)) Next Next End With

  • エクセルVBAで自動チャート作成。 エラーになります

    シート1に複数のデータが縦に入っています(A3:A90、B3:B90,C3:C90 といった具合です)データの数は30個です。 それぞれのデータを個々のチャートにして別のシート(シート名: Chart1)に並べて表示させたいです。 それで以下の様なコードを書きました。 このコードはうまく動くのですが、同じようにシート2のデータをChart2のシートにチャートを出そうと思って、4行目の・・・Source:=Sheet1.Range(Cells(3, j)・・・のところをSource:=Sheet2.Range(Cells(3, j)にして実行するとエラーになります。 何故だか分からなくて困っています。 対処方法を教えてください。 エラーは Run-time error ‘1004’: Application-defined or Object-defined error です。 お願いします。 For j = 1 To 30 Set ch = ActiveSheet.ChartObjects.Add(10, 5 + j * 105, 500, 100) ch.Chart.ChartType = xlColumnClustered ch.Chart.SetSourceData Source:=Sheet2.Range(Cells(3, j), Cells(90, j)), PlotBy:=xlColumns ch.Chart.Location where:=xlLocationAsObject, Name:="Chart1" With ch.Chart .HasTitle = True .ChartTitle.Characters.Text = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With Next j

  • AccessからEXCELのグラフの操作をしたい

    AccessからExcelのシートのデータを参照して EXCELのグラフを操作しています グラフのテキストに任意の文字を入れたいのですが msoTextOrientationHorizontal で(定数が定義されていません) とコンパイルエラーになってしまいます これを回避する方法がありましたらご教授ください 初めてグラフを操作するので困っています         '// グラフのデータを設定    ActiveChart.SetSourceData Source:=Sheets("DATA").Range("B1:B7,D1:D7") '// グラフテキスト ActiveChart.ChartTitle.Text = "テスト" ' /// X数値軸ラベル" ActiveChart.Axes(xlCategory).AxisTitle.Text = "X数値軸ラベル" '/// Y数値軸ラベル ActiveChart.Axes(xlValue).AxisTitle.Text = "Y数値軸ラベル" ' '//グラフ内にテキストボックスの埋め込み With ActiveChart With .Shapes.AddTextbox(msoTextOrientationHorizontal, 13, 10, 70, 50) .TextFrame.Characters.Text = "へのへのもへじ End With End With

  • VBA Graph描画でのマーカ設定

    EXCELのVBAでGraphを描画します。 下記設定で Dim objChart As ChartObject Dim charGraph As Chart Set charGraph = objChart.Chart charGraph.ChartType = xlXYScatterLinesNoMarkers charGraph.HasLegend = True 複数ノーマーカの曲線を描画します。 charGraph.SeriesCollection(counter).XValues = X charGraph.SeriesCollection(counter).Values = Y 一点だけのマーカの線を描画すると、目盛ライン枠が移動します。 以前書いた曲線は外枠にはみ出します。そのマーカの部分を コメントするすると、正常になります。マーカの曲線を書いても 同じ現象になります。 目盛ラインの設定は以下のようになります。 'X軸の設定 With charGraph.Axes(xlCategory) .MaximumScale = 18 .MinimumScale = 0 .MajorUnit = 1 .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone .HasMajorGridlines = True .HasMinorGridlines = False .TickLabels.Font.Size = 10.25 .TickLabels.NumberFormatLocal = "0_ " With .MajorGridlines.Border .ColorIndex = 57 .Weight = xlHairline .LineStyle = xlDot End With End With 'Y軸の設定 With charGraph.Axes(xlValue) .MinimumScale = 0.4 .MaximumScale = 1.6 .MajorUnit = 0.1 .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone .HasMajorGridlines = True .HasMinorGridlines = False .TickLabels.Font.Size = 10.25 .TickLabels.NumberFormatLocal = "0.0" With .MajorGridlines.Border .ColorIndex = 57 .Weight = xlHairline .LineStyle = xlDot End With End With '凡例の設定 With charGraph.Legend .AutoScaleFont = False .Font.Size = 10.25 End With どうぞ、よろしくお願いします。