Excel VBA 図形(オートシェイプ)を反転、回転させる方法

図形作成/操作

図形(オートシェイプ)を反転、回転させる方法をご説明します。

図形を作成/追加した場合に、矢印や線など用途によって反転させたり、角度を調整することでより視覚的な操作が必要になることがあります。

図形の反転には「Flipメソッド」を、回転させるには「Rotationプロパティ」を使用して操作します。

反転、回転それぞれ順にご説明します。

また、無限ループを使用して画像が動き続ける簡単なコードも紹介します。

また、その他の図形の操作については次の記事をご覧ください。

1.図形を反転させる方法

図形(オートシェイプ)を反転するには、「Flipメソッド」を使います。

次のように記述します。

Object.Flip 反転方向
Flipの引数一覧
引数説明
msoFlipHorizontal左右反転
msoFlipVertical上下反転

2.図形を反転させるサンプルコード

図形を反転させるサンプルコードです。

次の図を左右上下それぞれ反転させたいと思います。

図形の取得方法については「図形(オートシェイプ)を取得する方法」をご覧ください。

上下反転
Sub Sample1()

With ActiveSheet

    .Shapes(1).Flip msoFlipVertical
    
End With

End Sub
左右反転
Sub Sample2()

With ActiveSheet

    .Shapes(1).Flip msoFlipHorizontal
    
End With

End Sub

3.図形を回転させる方法

図形(オートシェイプ)を回転するには、「Rotationメソッド」を使います。

図形は設定した角度で、図形の中心を軸に時計周りに回転します。

反時計回りに回転させたい場合には、回転させる値をマイナスで設定してください。

また、注意として現時点の角度から指定した数値分回転させるのではなく、指定した数値の角度になります。

次のように記述します。

Object.Rotation = 回転させる数値

4.図形を反転させるサンプルコード

図形を回転させるサンプルコードです。

次の図を時計回り/反時計回りでそれぞれ回転させたいと思います。

時計回りに回転

時計回りに45度傾けます。

Sub Sample3()

With ActiveSheet

    .Shapes(1).Rotation = 45
    
End With

End Sub
反時計回りに回転

半時計回りに45度傾けます。

Sub Sample4()

With ActiveSheet

    .Shapes(1).Rotation = -45
    
End With

End Sub

6.回転させ続けるサンプルコード

無限ループを使用する事で、図形をずっと回転させることも可能です。

ポイントは無限ループを意図的に組み込むことと、「DoEvents」で滑らかに描画することです。

また、回転をゆっくりするためにAPI関数の「Sleep」を使用しています。

「Sub Sample5()」の上に書かれている部分でSleepを使用できるように宣言しています。

また、より複雑に作りこむことで「太陽系をイメージして図形の球体(Shape)をグラフィカルに動かす」のような図形の移動も可能です。

#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If

Sub Sample5()

Dim i As Long

i = 1

With ActiveSheet

    Do
        
        DoEvents
        DoEvents
        
        .Shapes(1).Rotation = i
        
        If i = 360 Then
        
            i = 1
            
        Else
        
            i = i + 1
            
        End If
        
        Sleep 10
        
    Loop
    
End With

End Sub
タイトルとURLをコピーしました