VBA講座22 オートシェイプ(図形)の作成
 (Shapes コレクション、AddShape メソッド)

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

円を作成するマクロ

 シート上に円を挿入するマクロです。

 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 オブジェクトにはたらきかけて図形の色を変化させるマクロを作ってみます。

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

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

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