- ベストアンサー
円グラフの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
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 こういうことかな? Sub ClearLabels2() Dim cht As ChartObject Dim x As Variant For Each cht In ActiveSheet.ChartObjects With cht.Chart If .Type = xlPie Then .ApplyDataLabels Type:=xlShowPercent For Each x In .SeriesCollection(1).Points If InStr(x.DataLabel.Text, "0%") > 0 _ And Len(x.DataLabel.Text) = 2 Then x.DataLabel.Delete End If Next x End If End With Next cht End Sub
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録をとってみて、1つのグラフ単体で Sub Macro2() ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.PlotArea.Select ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _ HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:=False, _ ShowValue:=False, ShowPercentage:=True, ShowBubbleSize:=False ActiveChart.SeriesCollection(1).DataLabels.Select Selection.NumberFormatLocal = "0%;;" End Sub になりました。 "0%;;"でうまく行くように見えましたがダメですか。 >グラフのシートがたくさんあるのですが 質問の重点はこちらにある? それは For Each X In Worksheets("Sheet1").ChartObjects("グラフ 1"). _ で解決できるのですね。
お礼
マクロの記録でいろいろ改造しようかと思っていたのですが、VBAの知識が全くないので、苦労しています((+_+))。 ご回答頂いた皆さんすごいですね。私ももっと勉強したいです。ご回答ありがとうございました。自分自身勉強になり感謝しております。
- xls88
- ベストアンサー率56% (669/1189)
ANo.4のコメントは感違いでした。 再表示されるようにコーディングされていますね。 ただ、書式設定すれば、データ更新の都度、マクロを走らせる必要がない、ということでお勧めだと思います。 どうでしょうか? cht.Chart.SeriesCollection(1).DataLabels.NumberFormatLocal = "0%;;;" スレ汚し、大変失礼しました。
お礼
ありがとうございます。パワーアップしました。いろいろ方法があってびっくりしています。VBAですごいんですねっ。
- xls88
- ベストアンサー率56% (669/1189)
失礼します。 余計なお節介だとは思いますが、 質問にたいする直接の回答は、Wendy02さんから充分以上の御回答が示されたと思います。 ただ、個々のデータラベルを削除すると、元データがゼロ値以外の値に更新された場合、追従して再表示されることがなくなります。 データラベルを再表示するマクロが必要ということになります。その必要がなければ無問題です。 再表示する必要があるなら、umazanpaiさんが言われるように、データラベルの書式設定で対処した方が良いと思います。
お礼
とりあえずWendy02さんの回答で解決できそうです。元データを更新したときは注意しようかと思ってます。ありがとうございました。
- umazanpai
- ベストアンサー率38% (53/137)
ちょっと勘違いみたいです。 ごめんなさい。
お礼
ご回答ありがとうございます。前回のご回答のやり方も別のグラフで活用できそうです。
- umazanpai
- ベストアンサー率38% (53/137)
書式 0%;;; で消えそう。
お礼
ありがとうございます。こんな感じにしたかったんです。VBAは全く無知なので、改造するにも苦労してました。助かります。