ラベル グラフ の投稿を表示しています。 すべての投稿を表示
ラベル グラフ の投稿を表示しています。 すべての投稿を表示

補助線を引く: SetElement

グラフの補助線を引くには、SetElementプロパティを指定します。下の例では、ワークシート"sheet1"の"fig01"チャートで、縦と横の補助線を指定しています。このSetElementプロパティはとても便利で、グラフツール[レイアウト]タブの[ラベル]や[軸]などのグループで設定できるものは全て設定が可能です。

Sub test()
  Dim ws As Worksheet                         'ワークシート型変数の定義
  Dim fig As ChartObject                       'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")            'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")      'グラフを指定

  fig.Chart.SetElement (msoElementPrimaryCategoryGridLinesMajor)  '縦軸
  fig.Chart.SetElement (msoElementPrimaryValueGridLinesMajor)       '横軸
End Sub

凡例を表示する:HasLegend

グラフに凡例を表示するには、Chart.HasLegendプロパティを指定します。
ここではワークシート"sheet1"に、"fig01"というグラフがあるとします。
このChartObjectについて、Chart.HasLegendプロパティの値をTrueにすると、凡例が表示されます。逆にFalseにすると、凡例が消えます。

Sub test()
  Dim ws As Worksheet                         'ワークシート型変数の定義
  Dim fig As ChartObject                       'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")            'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")      'グラフを指定

  fig.Chart.HasLegend = True                 '凡例を表示
  ' fig.Chart.HasLegend = False              '凡例を非表示
End Sub

図の大きさを指定:ChartObjects.Width/Height

図の大きさを指定するには、ChartObjects.Width/Heightプロパティを指定します。ここではワークシート"sheet1"にある、"fig01"という図の大きさを、幅100ピクセル、高さ100ピクセルにする例を示します。ちなみに、(100、100)は小さすぎて実用的ではありませんので、使っているディスプレイのサイズに合わせてこの数値を好みの値に変更してください。 下の例ではChartObject型の変数"fig"を作り短い名前にすることで、視認性を高めています。図の位置はChartObjects.Top/Leftで指定しますから、この4つのプロパティを使うと図を好き配置にすることができます。

Sub test()
  Dim ws As Worksheet                         'ワークシート型変数の定義
  Dim fig As ChartObject                       'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")            'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")      'グラフを指定

  fig.Width = 100
  fig.Height = 100
End Sub

図の移動、位置の指定:ChartObjects.Top/Left

図を移動させたり位置を指定するには、ChartObjectsのTop、Leftプロパティを指定します。それぞれ数字を指定しますが、これは画面の左上からのpixel数になり、(0,0)を指定すれば画面左上の位置にぴったりとハマります。 下の例ではワークシート"sheet1"にある"fig01"という名前の図の位置を指定しています。ChartObjects("fig01")をfigという変数に割り当ててあり、fig.Top、fig.Leftをそれぞれ10に指定していますので、左上からちょっと内側に入った位置に移動します。

Sub test()
  Dim ws As Worksheet                      'ワークシート型変数の定義
  Dim fig As ChartObject                    'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")        'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")     'グラフを指定

  fig.Top = 10
  fig.Left = 10
End Sub

グラフを作成: Shapes.AddChart, ChartObjects.Add

グラフを作成します。実はものすごく簡単で、以下の1行で終了です。
Sub test()
  ActiveSheet.Shapes.AddChart
End Sub








他の方法でも図を追加でき、下の例では最初に表示する大きさ、場所を指定できます。
Sub test()
  Set fig = ActiveSheet.ChartObjects.Add(120, 15, 200, 150)
End Sub





数値は左端からの座標、上端からの座標、初期サイズの幅、初期サイズの高さを指定する。

グラフに表示するデータを指定する: XValues, Values


2次元のグラフでは、x軸、y軸それぞれにデータが必要です。この値の指定の仕方を紹介します。このマクロをうまく使うと、新しい図を追加することなく、同じ図の中でいくつものグラフを表示するような機能を持たせることもできます。大量のデータを処理する場合には図が沢山あるとエクセル君はどんどん重くなって、PCも自分もどんどんイライラしてきますから、一工夫することで軽い処理を実現できます。
さて、ここではワークシート"sheet1"のB5からB14にxのデータ、C5からC14にyのデータが入力されているとし、"fig01"という名前の図が既に存在するとします。x軸のデータは"XValues"、y軸のデータは"Values"を指定します。

Sub test()
  Dim ws As Worksheet                         'ワークシート型変数の定義
  Dim fig As ChartObject                       'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")            'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")      'グラフを指定

  fig.Chart.SeriesCollection(1).XValues = "=Sheet1!$B$5:$B$14"
  fig.Chart.SeriesCollection(1).Values = "=Sheet1!$C$5:$C$14"
End Sub


















グラフがまだ無い場合に実行するとエラーがでますから、グラフを作成してから上記プログラムを試してみてください。














図を選択する: ChartObjects.Select

アクティブなシートの図を選択するには、ChartObjects.Selectプロパティを指定します。ここで、図は"fig01"という名前ということにします。
Sub test()
  ActiveSheet.ChartObjects("fig01").Select
End Sub






ワークシート名、グラフ名をそれぞれ別の変数に格納しておくと、大きいプログラムを作るときの自由度、視認性が格段にあがります。ただ上のような1行のプログラムを書くのと比べるとちょっと長くなってしまいますが。。。
Sub test()
  Dim ws As Worksheet                      'ワークシート型変数の定義
  Dim fig As ChartObject                    'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")         'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")   'グラフを指定

  fig.Select                                            'グラフを選択
End Sub