• ベストアンサー

Excel VBAで、アクティブシート内の全てのグラフを削除したい。

VBA初心者です。 アクティブシート内の全てのグラフを削除するには、どのように記述すればよいのでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 確か、 ActiveSheet.ChartObjects.Delete この一行でよかったと思いますね。

mumu001
質問者

お礼

回答ありがとうございました。動作することを確認しました。助かりました。

その他の回答 (1)

回答No.1

Dim objShape  As Shape '図形ループ For Each objShape In ActiveSheet.Shapes   'グラフならば   If (TypeOf objShape.OLEFormat.Object Is ChartObject) Then     '消す     objShape.Delete   End If Next

mumu001
質問者

お礼

回答ありがとうございました。早速ためしてみます。

関連するQ&A

  • VBA シートの削除について

    VBAのコードの書き方について質問があります。 コマンドボタンをクリックした時、シート1~シート4を削除をしたいのですが、 シート1~シート4が存在するかはその時の状況で異なります。 シート1が存在し、シート2~4が存在しないのであればシート1だけ削除する場合もあれば シート1~シート4がすべて無い場合もあります。 いずれのケースにしてもボタンクリック後は”シートを削除しました”のメッセージを 表示させたいのですが、どうコードを書けばよいでしょうか? VBA初心者なのでコードを教えていただけると助かります。 よろしくお願いします!

  • EXCEL VBAでシートを削除したい

    こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。

  • Excel VBAで、グラフを特定のセルに移動させたい。

    VBA初心者です。 エクセルのワークシート上のグラフ(例えば"グラフ1")を、特定のセル(例えばB4)に移動(もしくはカットペースト)させたいのですが、記述方法を教えて頂けないでしょうか。よろしくお願いします。

  • VBAのワークシート削除について

    VBAの初心者です。 VBAでワークシートを削除したいのですが、削除するワークシートがある場合とない場合があります。削除するワークシートがある場合は問題なく削除できますが、 ない場合、『インデックスが有効範囲にありません。』でエラーになってしまいます。(削除するワークシートが無いから当然ですが・・・) このような場合、どのように対処したら良いのでしょうか?

  • シートにデータがなければ削除するVBA

    こんばんは、VBAについて質問させてください(^O^) あるブックに32個のシートが入っています。 32個のシートのうち、セルA2にデータの入っているシートとそうでない シートがあります。(毎回変動します。) これを踏まえて、セルA2にデータが入っていればそのまま、 入っていなければそのシートを削除。 という作業をVBAでやろうと思って以下の通りVBAを記述したのですが、 シートが削除されるとシートの数が変わってしまうので、これではだめだと 思ったのですが、どのように記述すればいいのか分かりません(T_T) どなたかご教授いただけないでしょうか、よろしくお願いいたします。 Sub Macro1() Application.DisplayAlerts = False Dim i As Integer For i = 1 To 32 Sheets(i).Select If Range("A2").Value = "" Then Sheets(i).Delete End If Next i End Sub

  • VBAで、エクセルワークシート上の図を選択・削除したい

    VBAで、ワークシート上の図をすべて選択して削除するのは、どのように書いたら良いでしょうか?実際の図は一つなのですが、オートマクロで記述すると、 ActiveSheet.Shapes.Range(Array("Picture 3").Select のように、番号が変わってしまいます。

  • Excelで、VBAを用いてのグラフ作成。1日ごとの範囲でグラフシート

    Excelで、VBAを用いてのグラフ作成。1日ごとの範囲でグラフシートを作成。それぞれのグラフのX軸の範囲を、グラフタイトル名とグラフシート名に設定したい。(使用環境 : Excel 2004 Mac 日本語版) Excel VBAに関して質問します。グラフの元になる「表1」シートには、次のように1分間隔でデータが入力されています。 #######ここから####### 日時 系列A 系列B 2010/3/1 12:00 0 5 2010/3/1 12:01 1 2 2010/3/1 12:02 1 5 2010/3/1 12:03 5 5 (中略) 2010/3/31 11:57 2 1 2010/3/31 11:58 5 1 2010/3/31 11:59 3 1 2010/3/31 12:00 5 100 #######ここまで####### この表を、2010年3月1日から2010年3月31日までの、1日ごとのグラフにしようと思います。 私は初め、「日時」セルから、最後の「100」セルまでを選択し、グラフウィザードからグラフシートを作成しました。このグラフシートを、すべてのグラフシートの大本になるグラフシートとして、「おおもと」と名付けました。 そうして次のVBAプログラムを書きました。 #######ここから####### Option Explicit Sub Macro1() ' ' Macro1 Macro '3月1日分 Sheets("おおもと").Select Sheets("おおもと").Copy Before:=Sheets(1) ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = #2010/3/1 12:00# .MaximumScale = #2010/3/2 12:00# .MinorUnit = 0.0416666667 .MajorUnit = 0.125 End With ActiveChart.Deselect '3月2日分 Sheets("おおもと").Select Sheets("おおもと").Copy Before:=Sheets(1) ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = #2010/3/2 12:00# .MaximumScale = #2010/3/3 12:00# .MinorUnit = 0.0416666667 .MajorUnit = 0.125 End With ActiveChart.Deselect (中略) '3月30日分 Sheets("おおもと").Select Sheets("おおもと").Copy Before:=Sheets(1) ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = #2010/3/30 12:00# .MaximumScale = #2010/3/31 12:00# .MinorUnit = 0.0416666667 .MajorUnit = 0.125 End With ActiveChart.Deselect End Sub #######ここまで####### 上記のVBAプログラムを実行し、一応グラフは描けたのですが、作成したそれぞれのグラフシートのシート名とグラフタイトル名が、それぞれのグラフの日時の範囲を反映したものとなっておらず、一見してどの日時範囲をグラフ化したものか読み取れず、難儀しています。 そこで、3月1日分から3月30日分までのグラフシートとグラフタイトル名を、それぞれの日付の範囲に即した物(たとえば3月1日分のグラフシートは、グラフシート名が「3月1日」、グラフタイトル名が「3月1日」)になる、VBAの書き方を教えて貰えないでしょうか。 長々とした質問ですが、どうぞ、よろしくお願いします。

  • 円グラフの0%を削除するVBA

    お世話になります。 円グラフの0%のラベルを削除するVBAを調べており、 http://support.microsoft.com/kb/142132/ja に掲載されているものを使用しようかと思っています。 扱っているグラフのシートがたくさんあるのですが、"Sheet1"や"グラフ 1"の部分をその都度書き換えないで自動で操作することは可能でしょうか? よろしくお願いします。 Sub ClearLabels() Worksheets("Sheet1").ChartObjects("グラフ 1").Chart.ApplyDataLabels _ Type:=xlShowPercent For Each X In Worksheets("Sheet1").ChartObjects("グラフ 1"). _ Chart.SeriesCollection(1).Points If InStr(X.DataLabel.Text, "0%") > 0 _ And Len(X.DataLabel.Text) = 2 Then X.DataLabel.Delete End If Next End Sub

  • VBAでのシートの削除について

    あるシート("コントロール")の前に存在するシートを全て削除しようと思います。どう記述すれば良いでしょうか? あるシート("コントロール")の前にシートを追加するときは、 Worksheets.Add BEFORE:=Sheets("コントロール") でいけたので、 Worksheets.Delete BEFORE:=Sheets("コントロール") でいけるだろうと思ったら、無理でした。 教えてください。

  • VBAで棒グラフの色を変えたい

    VBAの初心者です。 棒グラフで1つの系列の色を自動で変えたいのですが、うまくできません。 エクセルファイルは品目ごとにシートが分かれていてすべておなじようにグラフがあります。 図のように、進行率順に並び替えるので、シートごとに店舗「E」は順番がかわります。 例としてシート「りんご」のグラフの店舗「E」のみを色を変えていく場合はどのようにしたらできるでしょうか? マクロの記録でやってみてもうまくいきません。 ご回答、よろしくおねがいします。

専門家に質問してみよう