Sub TEST3()
'1つ目の系列
With ActiveSheet.ChartObjects(1).Chart
'系列をループ
For i = 1 To .SeriesCollection.Count
.SeriesCollection(i).HasDataLabels = True 'データラベルを表示
Next
End With
End Sub
では、VBAコードを実行してみます。
VBAで全系列のデータラベルを表示できました。
全系列のデータラベルを非表示
全系列のデータラベルを非表示にしてみます。
先ほどのVBAコードで、「False」を入力すると、非表示にできます。
Sub TEST4()
'1つ目の系列
With ActiveSheet.ChartObjects(1).Chart
'系列をループ
For i = 1 To .SeriesCollection.Count
.SeriesCollection(i).HasDataLabels = False 'データラベルを非表示
Next
End With
End Sub
では、VBAコードを実行してみます。
VBAで全系列のデータラベルを非表示にできました。
データラベルの位置
データラベルの位置を、設定してみます。
データラベルの位置は、「グラフ毎」で違います。
「棒グラフ」と「折れ線グラフと散布図」の場合で、説明します。
棒グラフ
棒グラフで、「データラベル」の「位置」を設定してみます。
データラベルを「内側上」に配置する
データラベルを「内側上」に配置するVBAコードです。
位置の設定は、「.Position」を使います。
Sub TEST5()
'棒グラフの場合'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.Position = xlLabelPositionInsideEnd '内側上
End With
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルを「内側上」に配置できました。
棒グラフのデータラベルの配置例
棒グラフのデータラベルの配置で、引数の一覧です。
中央(xlLabelPositionCenter)
内側上(xlLabelPositionInsideEnd)
内側軸寄り(xlLabelPositionInsideBase)
外側上(xlLabelPositionOutsideEnd)
「棒グラフ」のデータラベルの配置を設定するVBAコードの例は、こんな感じになります。
'棒グラフの場合'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
'ラベルの位置
.Position = xlLabelPositionCenter '中央
.Position = xlLabelPositionInsideEnd '内側上
.Position = xlLabelPositionInsideBase '内側軸寄り
.Position = xlLabelPositionOutsideEnd '外側上
End With
設置したい位置に応じて、VBAコードを使いましょう。
折れ線グラフと散布図
次は、「折れ線グラフと散布図」の場合で、データラベルの位置を設定してみます。
データラベルを「中央」に配置する
「折れ線グラフと散布図」の場合で、データラベルを「中央」に配置してみます。
先ほどと同じく、「.Position」を使います。
Sub TEST6()
'折れ線グラフと散布図の場合'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.Position = xlLabelPositionCenter '中央
End With
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルを「中央」に配置できました。
折れ線と散布図のデータラベルの配置例
折れ線と散布図のデータラベルの配置について、引数は以下のものがあります。
中央(xlLabelPositionCenter)
左(xlLabelPositionLeft)
右(xlLabelPositionRight)
上(xlLabelPositionAbove)
下(xlLabelPositionBelow)
折れ線と散布図のデータラベルの配置を設定するVBAコードの例です。
'折れ線グラフと散布図の場合'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
'ラベルの位置
.Position = xlLabelPositionCenter '中央
.Position = xlLabelPositionLeft '左
.Position = xlLabelPositionRight '右
.Position = xlLabelPositionAbove '上
.Position = xlLabelPositionBelow '下
End With
目的の配置に合わせて、VBAコードを使いましょう。
データラベルをポイント単位で設定
データラベルを「ポイント単位」で設定してみます。
ポイント単位でデータラベルの表示と非表示
「ポイント単位」でデータラベルの表示と非表示する方法です。
データラベルの「2つ目のポイント」を表示
データラベルの「2つ目のポイント」を表示してみます。
ポイント単位で表示する場合は、「.Points」を使います。
ポイント単位の場合は、「.HasDataLabel」のように「s」はつかないので注意です。
Sub TEST7()
'1つ目の系列の「2つ目のポイント」のデータラベルを表示
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points(2).HasDataLabel = True
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルの「2つ目のポイント」を表示できました。
データラベルの「2つ目のポイント」を非表示
先ほどとは反対に、データラベルの「2つ目のポイント」を非表示にしてみます。
先ほどのVBAコードで、「False」を入力します。
Sub TEST8()
'1つ目の系列の「2つ目のポイント」のデータラベルを表示
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points(2).HasDataLabel = False
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルの「2つ目のポイント」を非表示にできました。
データラベルの位置を数値で指定する
データラベルの位置を「数値」で指定することもできます。
データラベルを「左」に寄せる
データラベルを「数値」を使って、「左」に寄せてみます。
使うVBAコードは、「.Left」です。
位置を指定するので、「ポイント単位」でしか設定することができません。
なので「.Points」も使うことになります。
Sub TEST9()
'1つ目の系列の「2つ目のポイント」のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points(2).DataLabel
.Left = .Left - 10 '左寄せる
End With
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルを「左」に寄せることができますた。
データラベルを「上」に寄せる
次は、データラベルを「上」に寄せてみます。
使うVBAコードは、「.Top」です。
先ほどと同じように「ポイント単位」で設定することになります。
Sub TEST10()
'1つ目の系列の「2つ目のポイント」のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points(2).DataLabel
.Top = .Top - 10 '上に寄せる
End With
End Sub
では、VBAコードを実行してみます。
VBAでデータラベルを「上」に寄せられました。
データラベルの書式設定
データラベルの書式設定をしてみます。
次の書式を設定します。
系列名
引き出し線
文字サイズと文字色
表示形式
背景色
系列名
データラベルの「系列名」を設定してみます。
データラベルに「系列名」を表示
データラベルに「系列名」を表示します。
使うのは、「.ShowSeriesName」です。
Sub TEST11()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.ShowSeriesName = -1 '系列名の表示
End With
End Sub
グラフを用意しておきます。
では、実行してみます。
VBAでデータラベルに「系列名」を表示できました。
データラベルの「系列名」を非表示
データラベルの「系列名」を非表示にしてみます。
先ほどのVBAコードに「0」を入力します。
Sub TEST12()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.ShowSeriesName = 0 '系列名の非表示
End With
End Sub
では、VBAコードを実行してみます。
VBAでデータラベルの「系列名」を非表示にできました。
引き出し線
次は、データラベルの「引き出し線」を設定してみます。
データラベルに「引き出し線」を表示
データラベルに「引き出し線」を表示します。
使うのは、「.HasLeaderLines」です。
Sub TEST13()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
.HasLeaderLines = True '引き出し線を表示
End With
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルに「引き出し線」を表示できました。
データラベルの「引き出し線」を非表示
データラベルの「引き出し線」を非表示にしてみます。
先ほどのVBAコードに「False」を入力します。
Sub TEST14()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
.HasLeaderLines = False '引き出し線を非表示
End With
End Sub
では、VBAコードを実行してみます。
VBAでデータラベルの「引き出し線」を非表示にできました。
文字サイズと文字色
データラベルの「文字サイズ」と「文字色」を設定する方法です。
文字サイズは、「.Font.Size」を使います。
文字色は、「.Font.Color」です。
Sub TEST16()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.Font.Size = 13 'サイズを設定
.Font.Color = RGB(255, 0, 0) '赤色
End With
End Sub
グラフを用意しておきます。
元グラフ
では、VBAコードを実行してみます。
データラベルの「文字サイズ」と「文字色」を設定
VBAでデータラベルの「文字サイズ」と「文字色」を設定できました。
表示形式
データラベルの「表示形式」を設定してみます。
データラベルの表示形式を「通貨」に設定
データラベルの表示形式を「通貨」に設定します。
使うVBAコードは、「.NumberFormatLocal」です。
Sub TEST17()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.NumberFormatLocal = "\#,##0" '表示形式
End With
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルの表示形式を「通貨」に設定できました。
データラベルの表示形式を「標準」に設定
データラベルの表示形式を「標準」に設定してみます。
標準は、「"G/標準"」と入力します。
Sub TEST18()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.NumberFormatLocal = "G/標準" '表示形式
End With
End Sub
では、VBAコードを実行してみます。
VBAでデータラベルの表示形式を「標準」に設定できました。
データラベルの表示形式を「セルとリンク」する
データラベルの表示形式を「セルとリンク」してみます。
セルとリンクすると表示形式の設定が簡単になります。
使うVBAコードは、「.NumberFormatLinked」です。
Sub TEST19()
'1つ目の系列のデータラベル
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels
.NumberFormatLinked = -1 'セルと表示形式をリンクする
End With
End Sub
Sub TEST20()
'1つ目の系列のデータラベルの「塗りつぶし」
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels.Format.Fill
.Visible = msoTrue '塗りつぶしあり
.ForeColor.RGB = RGB(255, 0, 0) '赤色
.Transparency = 0.5 '透過率
End With
End Sub
グラフを用意しておきます。
では、VBAコードを実行してみます。
VBAでデータラベルの背景色を設定できました。
データラベルの背景色を「なし」にする
データラベルの背景色を「なし」にするVBAコードです。
「msoFalse」を入力することで、背景色をなしにできます。
Sub TEST21()
'1つ目の系列のデータラベルの「塗りつぶし」
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).DataLabels.Format.Fill
.Visible = msoFalse '塗りつぶしなし
End With
End Sub