Excel VBAでグラフの凡例内の系列を非表示にする方法

このQ&Aのポイント
  • Excel VBAを使用してグラフの凡例内の特定の系列を非表示にする方法がわかりません。
  • VBAの記述方法がわからず、Excel2010で使用する場合において、グラフの凡例内の追加した系列を非表示にする方法を教えていただけませんか。
  • Excel2010のVBAを使用してグラフの凡例内の特定の系列を非表示にする方法について教えてください。
回答を見る
  • ベストアンサー

EXCELVBAグラフ凡例表示部分の系列の名称非表

すいません。VBAの記述の方法がわからないのでお手数ですが教えてください 使用アプリ・使用OS:Excel2010 VBA Windows7 ■教えてほしい内容 グラフを作成し、その後以下のVBAでグラフの系列を追加しています。 dk = ActiveChart.SeriesCollection.Count + 1 ActiveChart.SeriesCollection.NewSeries '系列名の設定 ActiveChart.SeriesCollection(dk).Name = "cp-" & dk 'y軸の値設定 ActiveChart.SeriesCollection(dk).Values = "={" & aaa & "}" '散布図設定 ActiveChart.SeriesCollection(dk).ChartType = xlXYScatter その後、グラフの凡例部分でこの追加した系列cp-○の凡例内の系列を非表示にしたいのですがわかりません。 申し訳ありませんが教えてください。

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

  • ベストアンサー
回答No.1

VBE のメニューのオブジェクトブラウザで、(LegendEntries ではなく)LegendEntry オブジェクトを見ると、そのメンバに Delete があります。 ちなみに Delete はできても Add はできないようです。LegendEntry を追加したくなったら、HasLegend プロパティを False や True に切り替えることにより、Legend オブジェクト(凡例)全体を消したり出したりしてください。 あれこれ操作する場合は、参考 URL のように何かのオブジェクトを Set しておくと、コードの可読性が上がるでしょう。 With ActiveChart   .HasLegend = True   .Legend.LegendEntries(dk).Delete End With

参考URL:
http://www.officepro.jp/excelvba/chart_edit/index6.html
kagorou
質問者

お礼

MarcoRossiItalyさん 私の分かりずらい説明文を理解していただき早速の返事、解答ありがとうございます。 With ActiveChart   .HasLegend = True   .Legend.LegendEntries(dk).Delete End With これです。これがわからなくて困っていたんです。 これで仕事の効率が上がります。 本当にありがとうございました。助かりました。

関連するQ&A

  • VBAのグラフに違うシートの系列の追加について??

    VBAでグラフに新たな系列を追加しようと思い 以下のプログラムを書きました。 しかしながら、 . Valuesの値の指定の場所でエラーが発生しました。 また、 .XValues = Sheets(シート名(o)).Range(Cells(2, 1), Cells(行の数 + 1, 1)) .Values = Sheets(シート名(o)).Range(Cells(2, p + 1), Cells(行の数 + 1, p + 1)) を .XValues = Range(Cells(2, 1), Cells(行の数 + 1, 1)) .Values = Range(Cells(2, p + 1), Cells(行の数 + 1, p + 1)) に直すとうまくいきました。 別のシートの値をグラフに設定する方法がわかっていないみたいなのですが、 やり方がよくわかりません。 もし、わかる方がいたら教えていただけないでしょうか? よろしくお願いします。 以下、書いたプログラムです。 o=2 ActiveSheet.ChartObjects("グラフ1 " ).Activate ActiveChart.SeriesCollection.NewSeries 'グラフの種類・データの範囲・凡例・2軸の使用を指定します With ActiveChart.SeriesCollection(o) 'グラフの種類を設定 折れ線グラフ .ChartType = xlXYScatterLines 'データの指定 .XValues = Sheets(シート名(o)).Range(Cells(2, 1), Cells(行の数 + 1, 1)) '←ここでエラーが出ます。 .Values = Sheets(シート名(o)).Range(Cells(2, p + 1), Cells(行の数 + 1, p + 1)) '凡例の指定 .Name = シート名(o) End With

  • excelのマクロによるグラフの指定方法

    マクロがどのように記録されるかを見ながら、VBAのスクリプトの書き方を学んでいる初心者です。 Sub Macro1() ' ' Macro1 Macro , ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveWindow.ScrollColumn = 1 ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$B$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$B$4:$B$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$C$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$C$4:$C$18" ActiveChart.ChartType = xlLine ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$D$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$D$4:$D$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$E$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$E$4:$E$18" ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(3).Name = "='平均化'!$F$1" ActiveChart.SeriesCollection(3).Values = "='平均化'!$F$4:$F$18" End Sub 以上のマクロを作成し、実行したのですが、”指定した名前のアイテムが見つかりませんでした”と出て、上手く実行されませんでした。 操作対象のオブジェクトを行き来する方法を知りたいのですが、オブジェクトを作成するたびに ActiveSheet.ChartObjects("グラフ 1").Activate のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。 つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、 どなたかご教示お願いできませんでしょうか。

  • グラフマクロで系列を変数にする方法を教えてください

    エクセルのグラフマクロについて質問します。 系列のxの値(Yの値も)の設定で、 グラフ化したいワークシートと範囲を変数にすることはできますか? 目的は、複数あるシートの複数のセルをグラフ化したい、というものです。 変数にてシート名と範囲を指定したいです。 ↓のようなプログラムを作成してみましたが、どうもうまく動きません。 12行目で止まってしまいます。 13行目はでたらめですが、範囲も変数bにできないかなぁと、勝手にイメージで作ってみました。 Sub () n = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To n Sheets("SHEET1").Select Range("A" & i).Select a = ActiveCell.Value Sheets(a).Select Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets(a).Range("V22") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=sheets(a)!R2C4:R5C4" ActiveChart.SeriesCollection(1).Values = "=sheets(a)!range(b)" ActiveChart.Location Where:=xlLocationAsObject, Name:=Sheets(a) Next i End Sub 当方、マクロかじりたての初心者です。 どなたか、よろしくおねがいします!

  • VBAでグラフの凡例をまびきたいのですが

    エクセル2003のVBAで、グラフの凡例をまびきたいのですがやり方がわかりません。 例えば 系列1:凡例表示 系列2:凡例非表示 系列3:凡例表示 系列4:凡例非表示 といった具合です。 以下のような雰囲気のコードはないでしょうか。 For i=1 to 10 Workbooks("matome.xls").Charts("Graph_PinPex").SeriesCollection(i * 2).HasLegend = False Next i

  • Excelでのグラフ系列に関するマクロ

    下記が上手く動作しないので、皆さまのお知恵を拝借したく思います。 概略を言いますと、散布グラフ選択時にmt02数の系列を増やすVBAです。増やした系列情報として基準系列データを与えており、その後置換処理をしています(基準系列=mt03、今は一時的に1系列目) Sub 系列情報の取得 Dim fn As String Dim mt02, mt03 As Integer Dim i, k As Integer Dim new_k As String fn = ActiveChart.SeriesCollection(mt03).Formula k = 1 Do Until k > mt02 new_k = 系列追加と参照先設定((i), (k), (fn)) k = k + 1 Loop ' グラフが選択されていない状態になるとココへ Chart_Error: msg = MsgBox("NG", vbCritical, "error") End Sub Function 系列追加と参照先設定(i2 As Integer, k2 As Integer, fn2 As String) Dim fn_new As String ActiveChart.SeriesCollection.NewSeries ' 系列情報を置換、一時的に1系列目を基準データとしている i2 = i2 + k2 fn_new = Replace(fn2, "1)", i2 & ")") ActiveChart.SeriesCollection(i2).Formula = fn_new End Function 不具合箇所としては、Sub内でDo文が条件外となるとグラフが選択されていないと認識されてNG処理へ移行する点です。For文にしても不可、グラフを再選択させてもその瞬間にNGとなります。

  • excel2010 マクロでの散布図作成

    excel2010で、ログを整理して複数のグラフを自動作成するマクロを作成しています 散布図の作成手順を記録した後、変数を当てなおしマクロを走らせると記録時と異なる挙動を示し、記録時にはひとつしか作成しなかった系列が25個くらい作成されました 下記マクロでおかしなところがあればご指摘ください ------------------------------ sheetname2 = ActiveSheet.Name ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatterLinesNoMarkers ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='" & sheetname2 & "'!$E$1" ActiveChart.SeriesCollection(1).XValues = "='" & sheetname2 & "'!$A$2:$A$" & y3 ActiveChart.SeriesCollection(1).Values = "='" & sheetname2 & "'!$E$2:$E$" & y3 ------------------------------- 作りたいグラフ:散布図 系列 「アクティブシート」のセルE1 x軸  「アクティブシート」のセルA2~A「y3」 y軸  「アクティブシート」のセルE2~E「y3」 なお、シート名を固定すると色々と問題があるため、変数としてあります また、変数y3は別途取得してありますが、省略いたします

  • マクロ

    下記のようなプログラムを組んでグラフを書こうとしているのですが,ある問題が発生しました. dim ydata(6) as Range For n = 1 To 6 If OP(n) = True Then '新しくデータ系列を作成します ActiveChart.SeriesCollection.NewSeries With ActiveChart.SeriesCollection(n) 'グラフの種類を設定 棒グラフ .ChartType = CT 'X軸の項目軸を指定 .XValues = xdata 'データの指定 .Values = ydata(n) '凡例の指定 .Name = HL(n) '凡例の色 .Interior.ColorIndex = HCL(n) End With   nが2となった時,ydata(2)がNothingとなってしまいます. ちなみに,elseから先が抜けておりますが,elseだった場合第2軸のデータ設定となります. 原因が解らないため大変困っております. どなたか,ぜひご教授願えないでしょうか? よろしくお願いいたします.

  • Excel VBAの散布図について

    Excel VBAで散布図を作ろうと考えています。 元のデータは添付した画像のものです。 左端にXの値があって、それ以降7列ごとに8枚の散布図を作成しようと考えております。 そこで、kを1~8まで動かし8種類の散布図を作成しようと考えているのですが、このマクロではk=1だけプログラムを回しただけで、一枚のグラフにすべての系列が載ってしまいます。 kを動かさずに、Cellの位置を指定して回した際にはうまくいったのですが、kを動かすようにしたところうまくいきません。 散布図を作る際に系列の数(私の場合7種類)を指定するにはどうしたらよいでしょうか。 どなたかご教授ください。 For k = 1 To 8 ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatter ActiveChart.SeriesCollection(1).Name = Sheets("Voltammogram").Cells(10, -5 + 7 * k) ActiveChart.SeriesCollection(1).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(1).Values = Sheets("Voltammogram").Range(Cells(12, -5 + 7 * k), Cells(250, -5 + 7 * k)) ActiveChart.SeriesCollection(2).Name = Sheets("Voltammogram").Cells(10, -4 + 7 * k) ActiveChart.SeriesCollection(2).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(2).Values = Sheets("Voltammogram").Range(Cells(12, -4 + 7 * k), Cells(250, -4 + 7 * k)) 以降7列まで続きます。

  • グラフの凡例のデータ範囲を変数を使って設定したい

    エクセルで線グラフを作成し、凡例を設定するvbaの記述方法がわかりません。 凡例に設定したいデータは、連続する2つのセルの範囲で、変数を用い、記述できないかと模索しています。 線グラフは3つの系統あります。 記述内容は以下の通りです --------------------------------------------------------- Sub グラフ化() d = Worksheets("sheet1").Range("A10").End(xlUp).Row ThisWorkbook.Charts("Graph1").Activate With ActiveChart    .ChartType = xlLine    .HasDataTable = True    .HasLegend = True End With For i = 1 to 3 ActiveChart.SeriesCollection(i).Name = Worksheets("sheet1").Range(Cells(i, 3), Cells(i, 5)) Next End Sub ----------------------------------------- 上記の記述ですと、 'Cells'メソッドは失敗しました.'Global'オブジェクト とエラー表示がでます。 すみませんが、よろしくお願いします。

  • Office 2003 excel vbaでグラフの種類を一系列毎に判

    Office 2003 excel vbaでグラフの種類を一系列毎に判定するマクロを組もうとしております。マクロの対象となるグラフには合計で4系列が含まれており、上から棒グラフ、棒グラフ、マーカーなしの折れ線グラフ、マーカー付のおれせんグラフとなっています。 以下のマクロを実行して、「xlbar」「xlbar」「xlline」「xlline」とメッセージが返る事を想定していたのですが、実際には「51」「51」「65」「4」とメッセージが表示されます。 どこで間違っているのかご教示いただけますと幸いです。 Sub 判定() Dim i As Integer Dim seriesCounts As Integer seriesCounts = ActiveChart.SeriesCollection.Count For i = 1 To seriesCounts MsgBox ActiveChart.SeriesCollection(i).ChartType Next i End Sub

専門家に質問してみよう