VBA 第4章:グラフとオブジェクトの操作【マクロのみ】

1.グラフを挿入する

ワークシートの埋め込みグラフを作成するには、AddChartメソッドを実行します。AddChartメソッドは、Excel2007で追加された機能です。データ範囲を指定しないでAddCartメソッドを実行すると、アクティブセルを含むセル範囲からグラフを作成します。

 

2.種類を指定してグラフを挿入する

グラフの挿入と同時に作成するグラフの種類を指定するには、AddChartメソッドの1番目の引数に、グラフを表す定数を指定します。定数の一覧は658ページを参照してください。

 

3.位置を指定してグラフを挿入する

AddChartの引数Leftと引数Topを指定すると、任意の位置にグラフを挿入できます。サンプルはセルB6を左上とした位置にグラフを挿入しています。

 

4.大きさを指定してグラフを挿入する

AddChartの引数Widthと引数Heightを指定すると、任意の位置にグラフを挿入できます。サンプルは、セル範囲B6:E13に合うようなグラフを挿入しています。

 

5.グラフの数を取得する

ワークシート上に挿入されたグラフは、ChartObjectオブジェクトとして操作できます。挿入されているグラフの数を取得するには、ChartObjectsコレクションのCountプロパティを調べます。

 

6.グラフの名前を設定する

ワークシート上のグラフを操作する時は、何番目に挿入したかを表すIndexプロパティを使うことが多くなります。あるいは、グラフには名前が設定されているので、名前を指定することも可能です。グラフの名前はExcelが便宜的に付けます。サンプルは、グラフの名前を設定します。

 

7.グラフの位置を調べる

グラフが、どのセル範囲に挿入されているかは、グラフ(ChartObectオブジェクト)のTopLeftCellプロパティとButtomRightCellプロパティで調べられます。TopLeftCellプロパティはグラフの左上端にあるセルを返し、BottomRightCellプロパティは右下端のセルを返します。

 

 

8.グラフの大きさや位置を調べる

グラフの大きさや位置を数値で管理したいときは、ChartObjectオブジェクトのLeftプロパティ、Topプロパティ、Widthプロパティ、Heightプロパティを操作します。値を設定することも可能です。それぞれの単位はポイントです。

 

9.全てのグラフの左端を揃える

ワークシートに挿入した複数のグラフを全て同じ位置に揃えたいときは、ChartObjectオブジェクトのLeftプロパティやTopプロパティを基準となるグラフに合わせます。サンプルは、1番目のグラフに合わせています。

 

10.すべてのグラフの大きさを揃える

ワークシートに挿入した複数のグラフを、すべて同じ大きさに揃えたいときは、ChartObjectオブジェクトのWidthプロパティとHeightプロパティを基準とするグラフに合わせます。サンプルは1番目のグラフに合わせています。

 

11.グラフにタイトルを設定する

グラフにタイトルを設定するには、ChartTitleオブジェクトのTextプロパティに文字列を指定します。ただし、グラフにタイトルが表示されていないと、エラーになります。タイトルが表示されているかどうかは、ChartObjectオブジェクトのHasTitleプロパティで判定できます。

 

12.タイトルとセルをリンクさせる

グラフのタイトルをセルとリンクさせるには、ChartTitleオブジェクトのTextプロパティに、リンクさせたいセルのアドレスを指定します。

 

13.凡例を表示する

グラフに凡例を表示するかどうかは、HasLegendプロパティで指定します。

 

14.凡例の位置を指定する

凡例の位置は、LegendオブジェクトのPositionプロパティで指定します。Positonプロパティには、次の定数を指定できます。

 

 

15.凡例をグラフに重ねる

凡例をグラフに重ね合わせるには、LegendオブジェクトのIncludeInLayoutプロパティにFalseを指定します。

 

16.凡例を塗りつぶす1

凡例を塗りつぶすには、まずLegend.Format.Fill.Visibleプロパティに定数masTrueを指定します。テーマの色で塗りつぶすには、ForeColorオブジェクトのObjectThemeColorプロパティにテーマの色を表す定数を指定します。

 

17.凡例を塗りつぶす2

凡例の塗りつぶしを色で指定するには、ForeColorオブジェクトのRGBプロパティにRGB関数で変換した色を指定します。TintAndShadeプロパティは、色の明暗を指定しています。

 

18.系列を調べる

系列はSeriesオブジェクトで表されます。Seriesオブジェクトの集合体がSeriesCollectionコレクションです。Nameプロパティで凡例に表示される文字列を取得できます。

 

19.系列にデータラベル を表示する1

データラベルを表示するには、SetElementメソッドを使います。サンプルでは、系列全体に外側上のデータラベルを表示し、系列鈴木だけ内側軸寄りのデータラベルを表示しています。

 

20.系列にデータラベル を表示する2

ChartObectオブジェクトのSetElementメソッドは、グラフに対してさまざまな設定を行う命令です。系列のデータラベルはそれぞれの系列(Seriesおぶじぇくと)のHasDataLabellsプロパティを操作する事でも表示・非表示を切り替えられます。

 

21.データラベル の種類を指定する

データラベルには、系列名・分類名・値を表示できます。それぞれの内容は、DataLabelsオブジェクトのShowSeriesNameプロパティ、ShowCategoryNameプロパティ、ShowValueプロパティで指定します。

 

22.系列の一部だけ色を変える

系列には複数のデータプロットされています。例えば、サンプルのグラフなら、系列田中は258、290、365という3つのデータで構成されています。グラフからこれらのデータの値を調べるには、SeriesオブジェクトのValuesプロパティを使います。Valuesプロパティは、プロットに使用している値群を配列で返します。それぞれの値が配列に格納されているので、個々の値を調べることで系列内のデータを個別に操作することが可能です。サンプルでは、系列田中の値を調べて、250以上の場合は、棒を赤色で塗りつぶしています。

 

23.データの位置や大きさを取得する

系列はSeriesオブジェクトで表られます。系列田中は、SeriesObjects(“田中”)です。系列ないのでデータは、Pointsコレクションで指定できます。サンプルの棒グラフでは、系列「田中」の1番目の棒(長方形)は、SeriesCollection(“田中”).Points(1)で表されます。TopプロパティやWightプロパティを調べることで、棒(長方形)の位置や大きさを取得できます。

 

24.グラフ上にオートシェイプを挿入する

グラフ上にオートシェイプの吹き出しを挿入してみましょう。まず、特定の位置に吹き出しを挿入してみます。吹き出しの内部に、最大値という文字列を表示し、立体的な書式を設定します。挿入する位置は、系列「田中」内で最も値が大きいデータ(棒)の上です。

 

25.系列の塗り潰しを設定する1

系列全体を塗りつぶすには、塗りつぶしたいSeriesオブジェクトを特定して、FontColorオブジェクトのObjectThemeColorプロパティに、テーマの色を表す定数を指定します。指定する定数は、下表のとおりです。設定される色は、テーマによって異なります。

mso

mso

mso

 

 

26.系列の塗り潰しを設定する2

系列の塗りつぶしの色で指定する場合は、ForeColorオブジェクトのRGBプロパティにRGB関数で生成した数値を指定します。

 

27.系列の色の透明度を設定する

色の透明度は、FillFormatオブジェクトのTransparencyプロパティに0不透明~1透明の数値を指定します。パターンやテクスチャが指定されているなど、透明度が反映されない場合もあります。

 

28.系列の色の明暗を設定する

色の明暗は、FontColorオブジェクトのTintAndShadeプロパティに-1~1の数値を指定します。

 

29.系列の色のグラデーションを設定する

系列を規定のグラデーションで塗りつぶすには、PresetGradientメソッドを使います。PrecetFrradientメソッドの書式は次の通りです。

mso

mso

mso

 

 

30.系列の色のグラデーションを設定する2

系列を独自のグラデーションで塗りつぶすには、ForeColorとCackColorの2色を設定します。次に、TwoColorGradientメソッドを実行します。TwoColorGradientメソッドの書式は、PresetGradientメソッドを参考にしてください。

 

31.系列の内部に画像ファイルを設定する

系列の内部に画像ファイルを表示するには、UserPictureメソッドを使います。

 

32.系列に組み込みのテクスチャを設定する

系列内に組み込みのテクスチャを表示するには、PresetTexturedメソッドを使います。PresetTexturedメソッドの引数には、次の定数を指定します。

mso

mso

mso

 

TextureAlignmentプロパティには、テクスチャを表示する方向を次の定数で指定します。

 

33.系列にパターンを設定する

系列内にパターンを設定するには、Patternedメソッドを使います。Patternedメソッドのパターンを表す定数の一覧は659ページを参照してください。

 

34.書式をリセットする

ClearToMatchStyleメソッドを実行すると、グラフに設定した全ての変更はリセットされて、テーマの標準書式に戻ります。

 

 

35.系列の一部だけグラフの種類を変える

系列の一部だけグラフの種類を変えるには、変更したいSeriesオブジェクトを特定して、ChartTypeプロパティにグラフを表す定数を指定します。2-Dグラフの一部だけ3-Dグラフにするなど、無理なことはできません。なお、グラフをあらわす定数の詳細は658ページを参照してください。

 

36.第二軸にプロットする

系列の一部だけ第二軸にプロットするには、変更したいSeriesオブジェクトを特定して、AxisGroupプロパティに[2]を設定します。

 

37.グラフの種類を設定する

グラフ全体の種類を設定するには、ChartオブジェクトのChartTypeプロパティにグラフを表す定数658ページを指定します。

 

 

38.線の太さを設定する

折れ線グラフで線の太さを設定するには、すべてのSeriesオブジェクトに対して、Weightプロパティに太さを表す数値を指定します。特定の線だけ太さを変えることも可能です。

 

39.マーカーを設定する

折れ線グラフのマーカーを設定するには、MarkerStyleプロパティにマーカーを表す次の定数を指定します。

 

40.スムージングする

折れ線をスムージングするには、スムージングしたいSeriesオブジェクトを特定して、SmoothプロパティにTrueを設定します。サンプルはすべての折れ線をスムージングしています。

 

41.円グラフの一部を切り離す

円グラフの一部を外側に切り離すには、Explosionプロパティに切り離す量を設定します。

 

42.オートシェイプを挿入する

オートシェイプを挿入するには、ShapesコレクションのAddShapeメソッドを使います。AddShapeメソッドには、オートシェイプの種類を表す定数と、左・上・幅・高さを表す数値を指定します。サンプルは、セル範囲B2:D5の位置に四角形を挿入しています。なお、オートシェイプの種類を表す定数の一覧は661ページを参照してください。

 

43.オートシェイプを削除する

オートシェイプを削除するときは、Deleterメソッドを使います。

 

44.オートシェイプの名前を設定・取得する

挿入したオートシェイプには、Excelが便宜的な名前を設定します。オートシェイプの名前はNameプロパティで設定・取得が可能です。

 

 

45.オートシェイプの種類を設定する

オートシェイプの種類を設定するには、AutoShapeTypeプロパティにオートシェイプを表す定数を設定します。

 

 

46.オートシェイプのスタイルを設定する

オートシェイプのスタイルを設定するには、ShapeStyleプロパティに規定のスタイルを表す定数を指定します。スタイルを表す定数の一覧は664ページを参照してください。

 

47.直線を引く

直線を引くには、AddConnectorメソッドを使います。AddConnectorメソッドの書式は次の通りです

 

mso

mso

mso

 

 

48.矢印を引く

矢印はまず直線を引き、その直線で終点部のスタイルを指定します。終点部のスタイルを表すEndArrowheadStyleプロパティには、次の定数を指定します。

 

終点部ではなく、始点部に矢印を付けるときは、BeginArrowheadStyleプロパティに定数を指定します。

 

49.線の太さを設定する

線の太さは、Weightプロパティで設定します。

 

50.線の色を設定する

線の色はForeColorプロパティで設定します。サンプルでは、TintAndSadeプロパティで少し明るくしています。

 

 

51.線の種類を設定する

線の種類はDashStyleプロパティで設定します。DashStyleプロパティには、次の定数を指定できます。

 

52.オートシェイプの塗り潰しを設定する1

オートシェイプの内部をテーマの色で塗りつぶすには、ObjectThemeColorプロパティにテーマの色を表す定数404ページを指定します。

 

53.オートシェイプの塗り潰しを設定する2

オートシェイプの内部を特定の色で塗りつぶすには、RGBプロパティにRGB関数で生成した色の数値を指定します。

 

54.オートシェイプをテクスチャで塗りつぶす

オートシェイプの内部を組み込みのテクスチャで塗りつぶすには、PresetTexturedメソッドにテクスチャを表す定数を付けて実行します。

 

 

55.オートシェイプを画像で塗りつぶす

オートシェイプの内部を画像で塗りつぶすには、UserPictireメソッドに画像ファイルの名前を付けて実行します。

 

56.オートシェップの塗りつぶしにグラデーションを設定する

オートシェイプの内部を独自のグラデーションで塗りつぶすには、ForeColorとBackColorの2色を設定します。次に、TwoColorGradientメソッドを実行します。TwoColorGradientメソッドの書式は、PresetGradientメソッド408ページを参考にしてください。

 

57.枠線の色を設定する

枠線の色は、ForeColorオブジェクトに色を設定します。

 

58.枠線の太さを設定する

枠線の太さは、LineFormatオブジェクトのWeightプロパティに数値を指定します。

 

59.枠線の種類を設定する

枠線の種類は、LineFormatオブジェクトのDashStyleプロパティに、線の種類を表す定数432ページを参照を指定します。

 

60.オートシェイプの影を設定する

オートシェイプに影を設定するには、ShadowオブジェクトのTypeプロパティに影を表す定数を指定します。定数はmsoShadow1~20は影スタイル1~20に対応し、それ以外は以下のようになります。

 

61.オートシェイプの反射を設定する

オートシェイプに反射を設定するには、ReflectionオブジェクトのTypeプロパティに反射を表す定数を指定します。なお定数は以下のようになります。

反射の効果をクリアするには、ReflectionオブジェクトのTypeプロパティに定数msoReflectionTypeNoneを指定します。

 

62.オートシェイプの光沢を設定する

オートシェイプに光沢を設定するには、Glowオブジェクトに光沢部分の色を設定し、Transparencyプロパティに色の透明度、Rediusプロパティに光沢考課の半径値を設定します。光沢の効果をクリアするには、GlowオブジェクトのRadiusプロパティに0を指定します。

 

63.オートシェイプのぼかしを設定する

オートシェイプにぼかしを設定するには、SoftEdgeオブジェクトのTypeプロパティにぼかしを会わらす定数を指定します。ぼかしの効果をクリアを設定します。

 

64.オートシェイプの面取りを設定する

オートシェイプに面取りを設定するには、ThreeDオブジェクトのVevelTopTypeプロパティに面取りを表す定数を指定します。なお、定数は以下のようになります。

面取りの効果をクリアするには、ThreeDオブジェクトのVisibleプロパティに定数msoFalseを指定します。

 

65.オートシェイプの3ーD回転を設定する

オートシェイプに3-D回転を設定するには、ThreeeDオブジェクトのSetPresetCameraプロパティに視点の方向を表す定数を指定します。RotationXプロパティ、RotationYプロパティ、RotationZプロパティにはそれぞれ、X軸、Y軸、Z軸方向の傾きを指定します。

3-D回転の効果をクリアするには、定数msoCameraOrthofraphicFrontを指定してSetPresetCameraメソッドを実行し、RotationXプロパティ、RotationYプロパティ、RotatonZプロパティにそれぞれ0を指定します。

 

66.オートシェイプに文字列を挿入する

オートシェイプの中に文字列を挿入するには、TextFrame2オブジェクトを操作します。TextFrame2オブジェクトはExcel2007で追加された機能です。文字列はTextプロパティに代入します。

 

67.文字列の大きさを指定する

文字列の大きさは、FontオブジェクトのSizeプロパティで設定します。

 

68.文字列を中央揃えに設定する

VertialAnchorプロパティは垂直方向の配置値を次の定数で指定します。

HorizontalAnchorプロパティは水平方向の配置位置を次の定数で指定します。

 

 

69.画像を挿入する

ワークシートに画像を挿入するには、PicturesコレクションのInsetメソッドを実行します。

 

70.テキストボックスを段組にする

テキストボックスを段組みにするには、Numberプロパティに段組みの段数を指定し、Specingプロパティに段の間のスペースを指定します。

 

コメントを残す

メールアドレスが公開されることはありません。