第97回.図形(Shape) | エクセルマクロVBA基礎 | エクセル(Excel)




第97回.図形(Shape)


オートシェイプの扱いです。


オートシェイプは、Shapeオブジェクトになります。


Shapeオブジェクトのコレクションが、Shapesコレクションになります。



Shapesコレクションのプロパティとメソッド

メソッド AddCallout 輪郭なしの吹き出しを作成します。新しい吹き出しを表す Shape オブジェクトを返します。
AddChart アクティブなシート上の指定された場所でグラフを作成します。
AddConnector コネクタを作成します。新しいコネクタを表す Shape オブジェクトを返します。コネクタを追加しても、すべてのものに接続されるわけではありません。他の文書の図形にコネクタの始点と終点を接続させるには、BeginConnect メソッドと EndConnect メソッドを使用します。
AddCurve ワークシートのベジェ曲線を表す Shape オブジェクトを返します。
AddFormControl Microsoft Excel コントロール?(Microsoft Office Excel コントロール: 従来から Excel にある ActiveX コントロール以外のコントロール。)を作成します。新しいコントロールを表す Shape オブジェクトを返します。
AddLabel ラベルを作成します。新しいラベルを表す Shape オブジェクトを返します。
AddLine Shapes オブジェクトに適用した場合、ワークシートの新しい線を表す Shape オブジェクトを返します。
AddOLEObject OLE オブジェクトを作成します。新しい OLE オブジェクトを表す Shape オブジェクトを返します。
AddPicture 既存のグラフィック ファイルから図を作成します。新しい図を表す Shape オブジェクトを返します。
AddPolyline 開いた曲線または閉じた多角形の描画オブジェクトを作成します。新しい曲線または多角形を表す Shape オブジェクトを返します。
AddShape ワークシートの新しいオートシェイプを表す Shape オブジェクトを返します。
AddSmartArt 指定されたレイアウトを使用して新しい SmartArt グラフィックを作成します。
AddTextbox テキスト ボックスを作成します。新しいテキスト ボックスを表す Shape オブジェクトを返します。
AddTextEffect ワードアート オブジェクトを作成します。新しいワードアート オブジェクトを表す Shape オブジェクトを返します。
BuildFreeform フリーフォームを作成します。作成したフリーフォームを表す FreeformBuilder オブジェクトを返します。フリーフォームにセグメントを追加するには、AddNodes メソッドを適用します。最低 1 つのセグメントを追加したら、FreeformBuilder オブジェクトに ConvertToShape メソッドを適用して、FreeformBuilder オブジェクトの幾何学的な特徴を持つ Shape オブジェクトに変換することができます。
Item コレクションから単一のオブジェクトを返します。
SelectAll 指定した Shapes コレクションのすべての図形を選択します。
プロパティ Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。値の取得のみ可能です。
Count コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。値の取得のみ可能です。長整数型 (Long) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。値の取得のみ可能です。
Range Shapes コレクション内の図形のサブセットを表す ShapeRange オブジェクトを返します。


上記一つ一つのメソッドの引数は、それぞれ違う訳ですから、


これらを全て覚える事は無理でしょう。


マクロの記録を参照すれば良いです、


が、しかし、Excel2007では、正しく記録されないので、他の方法を考えて下さい。


もっとも簡単なのは、作業用のシートに雛形のオートシェイプを作成しておき、


それをマクロでコピーするようにして、サイズ・位置等を変更するのが簡単です。



Shapeオブジェクトのプロパティとメソッド

メソッド Apply PickUp メソッドでコピーした書式を図形に適用します。
Copy オブジェクトをクリップボードにコピーします。
CopyPicture 選択しているオブジェクトを図としてクリップボードにコピーします。
Cut オブジェクトを切り取ってクリップボードに保存します。
Delete オブジェクトを削除します。
Duplicate オブジェクトを複製し、その複製への参照を返します。
Flip 指定した図形を、水平軸または垂直軸を中心として反転します。
IncrementLeft 指定した図形を、指定したポイント数だけ水平方向に移動します。
IncrementRotation 図形の z 軸を中心とした回転角度を、指定した度数だけ変更します。図形の絶対回転角度を設定するには、Rotation プロパティを使用します。
IncrementTop 指定した図形を、指定したポイント数だけ垂直方向に移動します。
PickUp 図形の書式をコピーします。コピーした書式を別の図形に適用するには、Apply メソッドを使用します。
RerouteConnections 図形に接続されたすべてのコネクタを再接続します。図形がコネクタの場合、そのコネクタを再接続します。
ScaleHeight 指定された倍率で図形の高さを拡大または縮小します。図または OLE オブジェクトの場合は、図形の元のサイズを基準に拡大または縮小するのか、現在のサイズを基準に拡大または縮小するのかを指定できます。図または OLE オブジェクト以外の図形は、常に現在の高さを基準に拡大または縮小されます。
ScaleWidth 指定された倍率で図形の幅を拡大または縮小します。図または OLE オブジェクトの場合は、図形の元のサイズを基準に拡大または縮小するのか、現在のサイズを基準に拡大または縮小するのかを指定できます。図または OLE オブジェクト以外の図形は、常に現在の幅を基準に拡大または縮小されます。
Select オブジェクトを選択します。
SetShapesDefaultProperties 指定された図形の書式を、その図形の既定の書式にします。
Ungroup 指定された図形または図形範囲の図形のグループを解除します。指定された図形または図形範囲内の図や OLE オブジェクトを分解します。
ZOrder 指定した図形を、コレクション内の他の図形の前面または背面に移動します (つまり、z 軸方向における図形の位置を変更します)。
プロパティ Adjustments 指定された図形のすべての調整値を含む Adjustments オブジェクトを取得します。オートシェイプ、ワードアート、またはコネクタを表す Shape オブジェクトに対して使用します。
AlternativeText Shape オブジェクトを Web ページに保存するときに、それらのオブジェクトに関連付ける代替テキストを設定します。値の取得および設定が可能です。文字列型 (String) の値を使用します。
Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。値の取得のみ可能です。
AutoShapeType 指定された Shape オブジェクトまたは ShapeRange オブジェクトの図形の種類を設定します。これらのオブジェクトは、線、フリーフォーム、またはコネクタ以外のオートシェイプである必要があります。値の取得および設定が可能です。MsoAutoShapeType クラスの定数を使用します。
BackgroundStyle 背景のスタイルを設定します。値の取得および設定が可能です。MsoBackgroundStyleIndex クラスの定数を使用します。
BlackWhiteMode プレゼンテーションが白黒モードで表示されているとき、指定された図形の表示形式を示す値を設定します。値の取得および設定が可能です。MsoBlackWhiteMode クラスの定数を使用します。
BottomRightCell オブジェクトの右下端にあるセルを表す Range オブジェクトを返します。値の取得のみ可能です。
Callout 指定した図形の吹き出しの書式プロパティが含まれる CalloutFormat オブジェクトを取得します。線吹き出しを表す Shape オブジェクトに対して使用します。値の取得のみ可能です。
Chart 図形に含まれるグラフを表す Chart オブジェクトを返します。値の取得のみ可能です。
Child 指定された図形が子図形である場合、または図形範囲内のすべての図形が同じ親の子図形である場合は、msoTrue を返します。値の取得のみ可能です。MsoTriState クラスの定数を使用します。
ConnectionSiteCount 指定された図形の結合点の数を取得します。値の取得のみ可能です。長整数型 (Long) の値を使用します。
Connector True の場合、指定された図形はコネクタです。値の取得のみ可能です。MsoTriState クラスの定数を使用します。
ConnectorFormat コネクタ書式プロパティを含む ConnectorFormat オブジェクトを取得します。コネクタを表す Shape オブジェクトに対して使用します。値の取得のみ可能です。
ControlFormat Microsoft Office Excel コントロール?(Microsoft Office Excel コントロール: 従来から Excel にある ActiveX コントロール以外のコントロール。)のプロパティを含む ControlFormat オブジェクトを返します。読み取り専用です。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。値の取得のみ可能です。長整数型 (Long) の値を使用します。
Fill 図形またはグラフを引数として受け取り、対応する塗りつぶしの書式プロパティが格納された FillFormat オブジェクトまたは ChartFillFormat オブジェクトを返します。値の取得のみ可能です。
FormControlType Microsoft Excel コントロール?(Microsoft Office Excel コントロール: 従来から Excel にある ActiveX コントロール以外のコントロール。)の種類を返します。値の取得のみ可能です。XlFormControl クラスの定数を使用します。
Glow 図形の光彩書式プロパティを含む指定された図形の GlowFormat オブジェクトを返します。値の取得のみ可能です。
GroupItems 指定したグループ内の各図形を表す GroupShapes オブジェクトを取得します。グループ内の 1 つの図形を取得するには、GroupShapes オブジェクトの Item メソッドを使用します。グループ化された図形を表す Shape オブジェクトに対して使用します。
HasChart 図形にグラフが含まれるかどうかを示します。値の取得のみ可能です。MsoTriState クラスの定数を使用します。
HasSmartArt 指定された図形を表す SmartArt 図が存在するかどうかを示します。値の取得のみ可能です。
Height オブジェクトの高さをポイント単位で表す倍精度浮動小数点型 (Single) の値を取得、または設定します。
HorizontalFlip True の場合、指定された図形が水平軸を中心に反転している状態を示します。値の取得のみ可能です。MsoTriState クラスの定数を使用します。
Hyperlink 図形のハイパーリンクを表す Hyperlink オブジェクトを返します。
ID 指定されたオブジェクトの種類を表す長整数型 (Long) の値を返します。
Left オブジェクトの左端から、ワークシート上の列 A の左端までの距離、または、グラフ シート上のグラフ エリアの左端までの距離をポイント単位で表す倍精度浮動小数点型 (Single) の値を取得、または設定します。
Line 指定された図形の線書式プロパティを含む LineFormat オブジェクトを取得します。LineFormat オブジェクトは、対象が直線の場合は直線自体を表し、対象が図形の場合は境界線を表します。値の取得のみ可能です。
LinkFormat リンクされた OLE オブジェクト プロパティを含む LinkFormat オブジェクトを返します。値の取得のみ可能です。
LockAspectRatio True の場合、指定された図形は、サイズを変更しても元の比率を保持します。False の場合、サイズを変更するときに、図形の高さと幅を個別に変更できます。値の取得および設定が可能です。MsoTriState クラスの定数を使用します。
Locked オブジェクトのロック状態を表すバリアント型 (Boolean) の値を取得、または設定します。
Name オブジェクトの名前を表す文字列型 (String) の値を取得、または設定します。
Nodes 指定した図形の幾何学的な特徴を表す ShapeNodes コレクションを取得します。
OLEFormat OLE オブジェクト プロパティを含む OLEFormat オブジェクトを返します。値の取得のみ可能です。
OnAction 指定されたオブジェクトがクリックされたときに実行するマクロの名前を設定します。値の取得および設定が可能です。文字列型 (String) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。値の取得のみ可能です。
ParentGroup 子図形または子図形範囲の共通の親図形を表す Shape オブジェクトを取得します。
PictureFormat 指定された図形の図の書式プロパティを含む PictureFormat オブジェクトを取得します。このプロパティは、図または OLE オブジェクトを表す Shape オブジェクトに対して使用します。値の取得のみ可能です。
Placement オブジェクトとその下にあるセルとの位置関係を表す XlPlacement の値を設定します。
Reflection 図形の反射書式プロパティを含む指定された図形の ReflectionFormat オブジェクトを返します。値の取得のみ可能です。
Rotation 図形の回転角度を設定します。値の取得および設定が可能です。単精度浮動小数点型 (Single) の値を使用します。
Shadow 指定された図形の影の書式を表す ShadowFormat オブジェクトを返します。値の取得のみ可能です。
ShapeStyle 図形領域における図形スタイルを表す MsoShapeStyleIndex を取得または設定します。値の取得および設定が可能です。
SmartArt 図形に関連付けられた SmartArt を表すオブジェクトを取得します。値の取得のみ可能です。
SoftEdge 図形のぼかしの書式プロパティを含む指定された図形の SoftEdgeFormat オブジェクトを返します。値の取得のみ可能です。
TextEffect 指定された図形の特殊効果の書式プロパティを含む TextEffectFormat オブジェクトを取得します。値の取得のみ可能です。
TextFrame 指定された図形の配置およびアンカーのプロパティの値を含む TextFrame オブジェクトを返します。値の取得のみ可能です。
TextFrame2 指定された図形のテキスト書式が含まれる TextFrame2 オブジェクトを取得します。値の取得のみ可能です。
ThreeD 指定された図形の 3-D 効果書式プロパティを含む ThreeDFormat オブジェクトを取得します。値の取得のみ可能です。
Title 指定された図形に関連付けられている代替テキストのタイトルを設定します。値の取得および設定が可能です。
Top 図形範囲の最前面の図形の上端から、ワークシートの上端までの距離をポイント単位で表す単精度浮動小数点型 (Single) の値を取得、または設定します。
TopLeftCell オブジェクトの左上端にあるセルを表す Range オブジェクトを返します。値の取得のみ可能です。
Type 図形の種類を表す MsoShapeType クラスの定数を設定します。
VerticalFlip True の場合、指定された図形が垂直軸を中心に反転している状態を示します。値の取得のみ可能です。MsoTriState クラスの定数を使用します。
Vertices 指定されたフリーフォームの頂点 (およびベジェ曲線のコントロール ポイント) の座標を一連の座標値?(座標値: 点の x 座標と y 座標を表す値のペア。座標の値は多くの点の値を含む 2 次元の配列に格納されます。)として返します。このプロパティで返された配列を、AddCurve メソッドまたは AddPolyLine メソッドの引数として指定することができます。値の取得のみ可能です。バリアント型 (Variant) の値を使用します。
Visible オブジェクトを表示するかどうかを表す MsoTriState クラスの定数を設定します。値の取得および設定が可能です。
Width オブジェクトの幅をポイント単位で表す倍精度浮動小数点型 (Single) の値を取得、または設定します。
ZOrderPosition 指定された図形の z 方向の位置を返します。値の取得のみ可能です。長整数型 (Long) の値を使用します。


こちらも、あまりに多く、とても覚えられるものではないでしょう。


マクロの記録とヘルプを参照して下さい。



使用例.

Sub sample()
  With ActiveSheet.Shapes.AddShape(msoShapeRightArrow, 0, 0, 100, 50)
    With .TextFrame.Characters
      .Text = "右へ移動"
      .Font.Size = 14
      .Font.Bold = True
    End With
    .Top = Range("B2").Top
    .Left = Range("B2").Left
  End With
End Sub


このマクロでは、以下の事を行っています。


1.右向きのブロック矢印を挿入(幅100、高さ50)

2.「右へ移動」の文字追加

3.文字のフォントサイズを14で太字

4.B2セルの位置へ移動

AddShapeの第一引数は、MsoAutoShapeType列挙体になります。


非常にたくさんありますので、知りたい場合はヘルプを参照して下さい。


上記のように、全てマクロで作成するより、


前述したとおり、雛形のオートシェイプを用意し、それをコピーで使用する事をお勧めします。




以下も参考にして下さい。


オートシェイプを他ブックの同じ位置に貼り付ける  




★新着記事★ ・・・ 新着記事一覧を見る
VBAでのOutlook自動操作:ExcelマクロVBA技術解説(7月8日)
他のブックのマクロを実行(Runメソッド):ExcelマクロVBA基礎(6月27日)
マクロをショートカットで起動(OnKeyメソッド):ExcelマクロVBA基礎(6月27日)
ナンバーリンクを解くVBAのパフォーマンス改善3:ExcelマクロVBAサンプル集(5月28日)
ナンバーリンク(パズル)を解くVBAに挑戦8:ExcelマクロVBAサンプル集(5月23日)
練習問題29(ロット引き当て):ExcelマクロVBA練習問題(5月13日)
時間計算で困ったときの確実な対処方法:エクセル関数超技(5月6日)


★人気記事★
Excel操作|ひらがな⇔カタカナの変換
Excel関数|徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)
Excel関数|セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)
Excel関数|グラフのデータ範囲を可変にする
Excel関数|奥義】大量データでの高速VLOOKUP
VBA基礎|第18回.最終行の取得(End,Rows,Count)
VBA基礎|第29回.セル・行・列の削除・挿入(Delete,Insert)
VBA基礎|第91回.条件付き書式(FormatCondition)
VBA基礎|第93回.ピボットテーブル(PivotTable)
VBA基礎|第98回.Findメソッド,FindNextメソッド(検索,次を検索)
VBAサンプル集|CSVの読み込み方法
VBAサンプル集|CSVの出力(書き出し)方法
VBAサンプル集|WEBデータの取得方法
VBA技術解説|エクセルVBAのパフォーマンス・処理速度に関するレポート
VBA技術解説|Dictionary(ディクショナリー)の使い方について