オートシェイプ(図形)を回転させたり、移動させたりする
今回のエントリーはExcelのマクロでオートシェイプ(図形)を操作する方法についてアップしたいと思います。
以下のようにExcelのシートにオートシェイプを作成し、それぞれ回転、移動をさせます。
1.オートシェイプ(図形)を回転させるコード
以下のサンプルコードではオートシェイプ(星16)を作成し、360度クルリと1回転させています。
Sub Botton_Click() Dim i As Long Dim objStar As Shape 'オートシェイプを作成し、変数に保存する Set objStar = ActiveSheet.Shapes.AddShape(msoShape16pointStar, 30, 30, 100, 100) 'オートシェイプの名前を”star16”に変更 objStar.Name = "star16" For i = 1 To 360 '傾きを設定する objStar.IncrementRotation -1 '画面に表示する DoEvents Next 'オートシェイプを削除する ActiveSheet.Shapes("star16").Delete End Sub
サンプルコードでは最初にAddShapeメソッドを使いオートシェイプ(図形:星16)を作成しています。
(6行目)
9行目では、後でオートシェイプを削除する為、オートシェイプの名前を”star16”に変更しています。
11~16行目でIncrementRotationメソッドを使いオートシェイプの傾きを-1(左に1度傾ける)にし、360回繰り返し360度1回転させています。
2.オートシェイプ(図形)を移動させるコード
以下のサンプルコードではオートシェイプ(星5)を作成し、左から右に移動させます。
Sub Botton2_Click() Dim i As Long Dim objStar As Shape 'オートシェイプを作成し、変数に保存する Set objStar = ActiveSheet.Shapes.AddShape(msoShape5pointStar, 0, 190, 70, 70) 'オートシェイプの名前を”star5”に変更 objStar.Name = "star5" For i = 0 To 400 '左位置を設定する ActiveSheet.Shapes("star5").Left = i '画面に表示する DoEvents Next 'オートシェイプを削除する ActiveSheet.Shapes("star5").Delete End Sub
オートシェイプを作成し、名前を変える所までは前の事例と同様です。
11~16行目でオートシェイプの左位置を繰り返し増やしていますが、この操作で図形を右にスライドした様に見せる事が可能です。
AddShapeメソッドの使い方
【構文】
シート.Shapes.AddShape(種類, 横位置, 縦位置, 幅, 高さ)
種類:オートシェイプの種類を指定
横位置:オートシェイプの左端位置を指定(単位:ポイント)
縦位置:オートシェイプの上端位置を指定(単位:ポイント)
幅:オートシェイプの幅を指定(単位:ポイント)
高さ:オートシェイプの高さを指定(単位:ポイント)
以上、今回はExcelの図形(オートシェイプ)を移動、回転させる為のVBAコードでした。
今回のサンプルファイルは以下のリンクからダウンロード可能です。