オートシェイプ(図形)を回転させたり、移動させたりする

今回のエントリーはExcelのマクロでオートシェイプ(図形)を操作する方法についてアップしたいと思います。

以下のようにExcelのシートにオートシェイプを作成し、それぞれ回転、移動をさせます。
140213

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コードでした。

今回のサンプルファイルは以下のリンクからダウンロード可能です。