• ベストアンサー

Excelのグラフ名を指定する方法

Excelでグラフを作成する場合、グラフに"グラフ 1"又は"Chart 1"と言った名前が付きます。 VBAでObjectを取得するときにこの番号を使うのですが、 この数字の部分は連番になっているようで、グラフ作成順に自動についてしまうのですが、この数字の部分を変えることはできないでしょうか? というのは、一度グラフを作成後にそれを削除した場合、次にグラフを作成すると削除した次の番号からとなってしまい、ちょっと処理上面倒なことがあるのでできればまた1番からの番号にしたいのです。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

不便な機能ですね。コントロールなども同じ仕組みですね。 Worksheet1のA列にデータを作って下記を実行する。 Sub test01() Charts.Add ActiveChart.Name = "aaa" MsgBox "確認" Charts("aaa").Delete '一部のセルを変化させるサンプル Worksheets("sheet1").Cells(1, 1) = 120 Charts.Add ActiveChart.Name = "aaa" End Sub とグラフシート名を自分で管理するよりほか方法は ないでしょう。 あと上記では、グラフ削除のAlertを防止することはやっていません。

gukky
質問者

お礼

早速の回答ありがとうございました。 上記の方法を確認しましたが、この方法ですとグラフはグラフシート上に作成され、ワークシート上に持ってくると従来のように"グラフ 1"となってしまうということでしょうか。 やはりこれはExcelの仕様として受け入れざるを得ないということのようですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA グラフオブジェクトの使用方法について

    Excel2003のVBAについて教えて下さい。 以下の(1)~(4)のコードを用いて セル"A1"に設定された値をグラフスケール(最大値)に設定しようとしています。 (1) scaleData = Worksheets("シート1").Range("A1").Value (2) Set chartObj = ActiveSheet.ChartObjects(1) (3) Set chart1 = chartObj.Chart (4) chart1.Axes(xlValue).MaximumScale = scaleData グラフオブジェクト単体(グループ化しない)時は問題なく、グラフスケールの設定が行えたのですが、グラフオブジェクトやラベル、ボタンなどを結合すると、(3)で、以下のエラーメッセージが出て、グラフスケールの設定が行えません。 「WorksheetクラスのChartObjectsプロパティを取得できません。」 グループ化することにより、グラフオブジェクトの指定方法が異なるのでしょうか? 解決方法をご存知の方、教えて下さい。宜しくお願い致します。

  • Excel VBAでグラフの操作をする。

    Excel VBAでグラフの操作をする。 したいことは、アクティブのグラフ(散布図)の仕様(大きさ、色等)を他のグラフにも適応させるということです。 おもに2点質問があります。 (1)マーカー情報の取得を行いたいのですが、  MyMS=Selection.MarkerStyle  (たとえば、xlCircle等を変数に格納したい) としたい場合、MyMSはオブジェクト型になるのでしょうか? つまり Dim MyMS As Object となるのでしょうか? (2)散布図の線の太さを指定するのに、  xlHairline  xlThin  xlMedium  xlThick とありますが、「データ系列の書式設定」では数字の入力が可能です。 その数字で指定または取得はできないのでしょうか?  .weight=xlThin を .weight=1.5 などです。 よろしくお願いします。

  • Excelグラフ作成方法を教えてください。

    最小値と最大値の間だけが表示されたExcelの棒グラフを作成したいと思っています。 具体的に説明しますと、A列にグラフにしたい項目があり、B列にその項目の最小値、C列に最大値が記入された表を作成し、グラフにすると、項目ごとに0を起点とした最小値と最大値の2つのグラフが出来てしまいます。 最小値と最大値間の棒グラフだけが出来る方法を教えてください。 調べてみるとトルネードチャートというグラフになるようです。 トルネードチャートをExcelで作成する方法を教えてください。 VBAでも対応出来ますので、是非よろしくお願いいたします。

  • Excelのグラフをshapeオブジェクトと指定すること

    こんばんは,助けてください。 Excelで大量にグラフを作成しています。 この時,グラフはグラフシートではなく,ワークシート上にオブジェクトとして貼り付けています。 このようにすると,Shapes(index)のようにして,indexのところにグラフの名前を入れて,Shapeオブジェクトを取得すると,グラフの位置や拡大縮小ができるようになりますよね。 これは,便利と思って,大量のグラフを整形して整列させようと思っています。グラフを作った順番がめちゃくちゃだったり,その他いろいろな事情で,インデックス番号を指定するのではなくて,名前を指定してやりたいと思います。 そこで, Activechart.Name = "問1-(1)" の様に指定してみたのですが, Activesheets.shapes("問1-(1)").・・・ のように指定して,縮小や移動をしようとしても,うまくいきませんでした。 このような場合に,グラフに名前を付けるにはどうしたらよいのでしょうか。教えてください。 また,ついでで申し訳ないのですが,グラフを移動させる位置を,相対的に指定するのではなくて,絶対的な位置に指定する方法はないものでしょうか?こちらも,もしよかったら教えてください。 ちなみに,Excelは2003です。よろしくお願いします。

  • エクセルグラフ2003と2007の違いについて

    エクセル2003で下記のVBAの構文を作成しました。 入力画面シートで入力し、グラフに色付けを反映させたものを 印刷画面のグラフに同じものを反映させているのですが エクセル2003ではうまくいっていたのですが エクセル2007になると構文中の 【Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor】の部分で 実行時エラー'-2147467259(80004005) ColorIndexメソッドは失敗しました;'Interior'オブジェクト とでてきて使用できなくなりました。 どなたかエクセル2007で使用できるようにする方法を教えてください。 作成した構文は以下のものです。 Sub Sam1() Dim nColor As Variant Dim i As Long i = 1 If Sheets("入力画面").Cells(i, "M") = 1 Then nColor = 5 Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor End Sub

  • EXCEL VBA:埋め込みグラフオブジェクトの命名方法について

    質問させて頂きます。 EXCEL2000のVBAで、グラフを色々加工しているのですが、 埋め込みグラフオブジェクトの名前をグラフ作成時に命名する事は 可能でしょうか? dim myRange as Range Set myRange = Range("A1:D2") Charts.Add ActiveChart.ChartType = xlPie ActiveChart.SetSourceData Source:=myRange, PlotBy:=xlRows ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey:=False, HasLeaderLines:=True とここで、(グラフそのもののサイズではなく) 埋め込みグラフオブジェクトのサイズを変更するとき、 ActiveSheet.Shapes(1).ScaleWidth 1.6, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes(1).ScaleHeight 1.9, msoFalse, msoScaleFromTopLeft のようにすれば、最初に作成したオブジェクトのサイズ変更は可能ではあるのですが、 条件により色々な種類の複数のグラフを順不同で作成しているため、 ActiveSheet.Shapes(1) では、希望のオブジェクトを選択できるとは限りません。 つきましては、Charts.Add 時に(グラフの名前ではなく) オブジェクトの名前を指定できれば希望のオブジェクトを 簡単に選択できると考えているのですが、これは可能でしょうか? 何卒ご教授のほど、よろしくお願いいたします。

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

    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(グラフが不動化)するのですが、Bookの保存でエラーが出て止まります。 このVBAは既にいくつかのシートに展開しており初めての不具合です。 よって、Book特有の不具合なら現象が再現出来ないと分からないかとも思いますが何かアイディアあればご教示お願いします。 ちなみに最初のTESTBook(シート)では問題なく動いて、上書き保存も普通にできます。このシートのVBAをコピペしているのですが、問題のBookでは上書き保存するとエラー表示で止まってしまいます。 エラーの箇所(黄色ハイライト)は > If .Chart.ChartTitle.Text = Cells(r, c).Text Then で「このオブジェクトにはタイトルがありません」 と表示されます。 最初にタイトルが数字のみの場合に対応していただいたのでタイトルを数字のみ、文字のみで試しましたがダメで、グラフを新しく作成し直してもダメでした。 尚、一番最初の動作確認では2つのグラフの内1つのみしか動かなくて、動かない方のグラフを新規で作成し直したら2つとも期待通りに動くようになったのですが、これで完成と 保存しようとしたら上記のところでエラーが発生して止まります。 VBAを中断してクローズして再度開くとVBAは正常に動きます。 そして保存しようとすると止まります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '縦パターン Dim r As Long '行番号変数 Dim c As Long '列番号変数 Dim j As Long 'グラフカウンター Dim w As Long Dim d As Long r = 5 'グラフタイトル一覧開始行番号 c = 11 ' グラフタイトル一覧格納列番号 w = 600 d = 50 Do If Cells(r, c).Value = "" Then Exit Do For j = 1 To ActiveSheet.ChartObjects.Count With ActiveSheet.ChartObjects(j) If .Chart.ChartTitle.Text = Cells(r, c).Text Then .Top = ActiveWindow.VisibleRange.Top + d .Left = ActiveWindow.VisibleRange.Left + w d = d + .Height End If End With Next j r = r + 1 Loop End Sub

  • Excel VBA グラフチャート名で指定するには

    ExcelのVBAでグラフを作成した後 ActiveChartでアクティブなチャートを指定するのではなく ActiveChart.Nameなどで取得したチャート名で指定するには どのように記述すればよいでしょうか。 例えば、以下のtest()のコードの中の ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone) ActiveChart.PlotArea.Select ActiveChart.Parent.Copy の部分をActiveChartを使わずチャート名(chart_nameなど)で指定するには どのように記述すればよいでしょうか。 よろしくお願いします。(Windows7,Excel2016) --------------------------------------- Sub test()  Dim chart_name As String  ThisWorkbook.Worksheets("Sheet1").Select  ThisWorkbook.Worksheets("Sheet1").Range("A1") = "A"  ThisWorkbook.Worksheets("Sheet1").Range("A2") = "B"  ThisWorkbook.Worksheets("Sheet1").Range("B1") = "75"  ThisWorkbook.Worksheets("Sheet1").Range("B2") = "25"  ThisWorkbook.Worksheets("Sheet1").Range("A10").Select  ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select  ThisWorkbook.Worksheets("Sheet1").Select  ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows  chart_name = ActiveChart.Name  chart_name = Trim(Right(chart_name, Len(chart_name) - Len(ActiveSheet.Name)))  ThisWorkbook.Worksheets("Sheet1").ChartObjects(chart_name).Activate  ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone)  ActiveChart.PlotArea.Select  ActiveChart.Parent.Copy End Sub

  • VBA(Excel)でのグラフの取り扱い

    VBA(Excel)でのグラフを取り扱いたいのですが、 オブジェクトの関係が良く分からないので教えて下さい。 以下のオブジェクト Chart,ChartObject,Shape,ChartArea,DrawingObject,PlotArea の関係とそれぞれ何をさしているのか教えて下さい。

専門家に質問してみよう