電子書籍の厳選無料作品が豊富!

お世話になります。
円グラフの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

A 回答 (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
    • good
    • 1
この回答へのお礼

ありがとうございます。こんな感じにしたかったんです。VBAは全く無知なので、改造するにも苦労してました。助かります。

お礼日時:2008/11/09 13:25

マクロの記録をとってみて、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"). _
で解決できるのですね。
    • good
    • 0
この回答へのお礼

マクロの記録でいろいろ改造しようかと思っていたのですが、VBAの知識が全くないので、苦労しています((+_+))。
ご回答頂いた皆さんすごいですね。私ももっと勉強したいです。ご回答ありがとうございました。自分自身勉強になり感謝しております。

お礼日時:2008/11/09 13:33

ANo.4のコメントは感違いでした。


再表示されるようにコーディングされていますね。
ただ、書式設定すれば、データ更新の都度、マクロを走らせる必要がない、ということでお勧めだと思います。
どうでしょうか?
cht.Chart.SeriesCollection(1).DataLabels.NumberFormatLocal = "0%;;;"
スレ汚し、大変失礼しました。
    • good
    • 0
この回答へのお礼

ありがとうございます。パワーアップしました。いろいろ方法があってびっくりしています。VBAですごいんですねっ。

お礼日時:2008/11/09 13:36

失礼します。


余計なお節介だとは思いますが、
質問にたいする直接の回答は、Wendy02さんから充分以上の御回答が示されたと思います。
ただ、個々のデータラベルを削除すると、元データがゼロ値以外の値に更新された場合、追従して再表示されることがなくなります。
データラベルを再表示するマクロが必要ということになります。その必要がなければ無問題です。
再表示する必要があるなら、umazanpaiさんが言われるように、データラベルの書式設定で対処した方が良いと思います。
    • good
    • 0
この回答へのお礼

とりあえずWendy02さんの回答で解決できそうです。元データを更新したときは注意しようかと思ってます。ありがとうございました。

お礼日時:2008/11/09 13:29

ちょっと勘違いみたいです。


ごめんなさい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。前回のご回答のやり方も別のグラフで活用できそうです。

お礼日時:2008/11/09 13:28

書式


0%;;;
で消えそう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!