[VBA] Shapes コレクションとAddShape メソッド

 エクセルには簡単な図形を挿入する オートシェイプ機能 が備わっていますが、それを VBA で制御してみます。単に図を挿入するだけならかえって手間になってしまうので意味がないように思えますが、これを応用するとちょっとした動的グラフィックスなどを作って(落下運動などの)物理学シミュレーションなどもできるようになるので、基本を知っておいて損はありません。

Shapes コレクションとAddShape メソッド

 シート上に円を挿入するマクロを作成します。

Sub 円作成()

  '開いているシートに円を挿入します
  ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 100, 50, 50).Select

  '円の縁取り線を消します
  Selection.ShapeRange.Line.Visible = msoFalse

End Sub

 マクロを実行すると縁取り線のない円が表示されます。
 次に Shapes プロパティ で Shapes コレクションを参照し、AddShape メソッド で新しい図形を追加します。

ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 100, 50, 50).Select

 AddShape メソッドの引数は次のような形で指定します

Object.AddShape(Type, Left, Top, Width, Height)

 Type は図形の種類で、今は楕円 (msoShapeOval) を指定しています。
 その他の引数は下図のようになっています。

 VBAオートシェイプで円を挿入

 図に示しているように、それぞれの長さは図形を囲むボックスに対して適用されるものです。楕円で幅と高さを等しく 50 に設定すると円となります。

 最後に縁取り線(枠線)を消すために Line プロパティを使って

Selection.ShapeRange.Line.Visible = msoFalse

と書いてあります。このように図形の性質を変えるには ShapeRange オブジェクトを持ってきてそのプロパティを変更します。次回記事では ShapeRange オブジェクトにはたらきかけて図形の色を変化させるマクロを作ってみます。

 ≫ 赤青緑を無作為に表示します
 ≫ 数学マクロ講座トップページ


 

コメントをどうぞ

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