| 
    
     |  | ドラキー さん、こんばんわ。 
 >(※当方Excel 2003ユーザーです。)
 私もです。
 
 
 >また、円グラフの横に表示される「凡例」からも、0%であった「B」の項目は表示から消したいと思っております。
 >
 >既に作成してしまっているグラフとファイルが大量にあることもあり、更に元データをなるべくいじりたくないことから、グラフを作る段階で"0%"の表示を防止するのではなく、直接グラフの表示を修正するようなVBAを作りたいのですが、超初心者ゆえに技量が足りずなかなかうまくいきません。。
 
 アクティブなシート上の埋め込みグラフの系列1で、値が0の時に「既に表示されている」データラベルを削除し、同時に凡例の項目も削除します。
 
 Sub test()
 Dim co As ChartObject, sc As Series, pt As Point
 Dim II As Long, Imax As Long, Hmax As Long
 '
 'アクティブなシートが対象
 With Application.ActiveSheet
 '埋め込みグラフでループ
 For Each co In .ChartObjects
 With co.Chart
 '系列は1
 Set sc = .SeriesCollection(1)
 'データの数
 Imax = sc.Points.Count
 '凡例に表示されている数
 If .HasLegend = False Then
 Hmax = 0
 Else
 Hmax = .Legend.LegendEntries.Count
 End If
 End With
 '
 '削除は後ろからが無難
 For II = Imax To 1 Step -1
 Set pt = sc.Points(II)
 '値がゼロ
 If sc.Values(II) = 0 Then
 'ラベルがあれば削除
 If pt.HasDataLabel = True Then
 pt.DataLabel.Delete
 End If
 'データ数と凡例表示数が一致する時だけ処理
 If Hmax = Imax Then
 co.Chart.Legend.LegendEntries(II).Delete
 End If
 End If
 Next
 Next
 End With
 End Sub
 
 こんな感じです。
 
 |  |