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 |
ExcelはVBAを使いこなすことでエンジニアにとって最強の友達に変身します。C++やJavaを習う傍らで、エクセルを思い通りに動かしてみませんか?シンプルな記述をモットーに、できるだけ短いプログラムを紹介します。
補助線を引く: SetElement
ラベル:
グラフ
グラフの補助線を引くには、SetElementプロパティを指定します。下の例では、ワークシート"sheet1"の"fig01"チャートで、縦と横の補助線を指定しています。このSetElementプロパティはとても便利で、グラフツール[レイアウト]タブの[ラベル]や[軸]などのグループで設定できるものは全て設定が可能です。
凡例を表示する:HasLegend
ラベル:
グラフ
グラフに凡例を表示するには、Chart.HasLegendプロパティを指定します。
ここではワークシート"sheet1"に、"fig01"というグラフがあるとします。
このChartObjectについて、Chart.HasLegendプロパティの値をTrueにすると、凡例が表示されます。逆にFalseにすると、凡例が消えます。
ここではワークシート"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 |
登録:
投稿 (Atom)