データラベルを設定する


円グラフにデータラベルを表示するのは、棒グラフにデータラベルを表示するのと同じ考え方です。

棒グラフにデータラベルを設定する

ただし、円グラフに系列は1つしかありませんから、For Nextなどで繰り返し処理をする必要はありません。

Sub Sample()
    Dim i As Long
    With ActiveSheet.ChartObjects(1).Chart
        .SeriesCollection(1).HasDataLabels = True
    End With
End Sub

表示するデータラベルの種類を指定するには、次のプロパティにTrueまたはFalseを指定します。

プロパティ名 意味
ShowSeriesName Trueを設定すると 系列名 を表示します
ShowCategoryName Trueを設定すると 分類名 を表示します
ShowValue Trueを設定すると 値 を表示します
ShowPercentage Trueを設定すると パーセンテージ を表示します
HasLeaderLines Trueを設定すると 引き出し線 を表示します

円グラフでは、データラベルの位置に、次の4種類を指定できます。

定数 意味
xlLabelPositionCenter -4108 中央
xlLabelPositionInsideEnd 3 内部外側
xlLabelPositionOutsideEnd 2 外部
xlLabelPositionBestFit 5 自動調整

Excel 2003のコードは動くか

Excel 2003で、データラベルを表示する操作をマクロ記録すると、次のコードが記録されます。

Sub Macro()
    ActiveSheet.ChartObjects("グラフ 1").Activate
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _
        False, HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:= _
        False, ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
End Sub

このコードは、Excel 2007でも問題なく動作します。

とはいえ、まさか、マクロ記録したコードをそのまま使うような人はいないでしょうから、Excel 2003までは、次のようなコードでデータラベルを表示していたと思います。

Sub Macro()
    With ActiveSheet.ChartObjects(1).Chart
        .ApplyDataLabels ShowValue:=True
    End With
End Sub

もちろん、このコードも、Excel 2007で問題なく動作します。