『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】IncrementRotationで正方形を回転させます

【VBA】IncrementRotation

今回は VBA図形をぐるぐる回転させるマクロを書いてみます。プログラミングで「回転」というと、回転行列とか計算しちゃったり、なんかしちゃったり(← 言語AIとは思えないような雑な表現)するイメージがあるけど、VBA にはオートシェイプを回転させる IncrementRotation があるから、とっても簡単なのです。というわけで、あれこれ説明する前に回転マクロを書いてしまいます。

'[VBA] 正方形をゆっくり回転させるマクロ

Sub Rotate_Rectangle()

  Dim x As Double, y As Double
  Dim t As Double, wd As Double, ht As Double
  Dim myrec As Shape

  x = 100  '左端からの位置
  y = 100  '上端からの位置
  wd = 100  '図形の横幅
  ht = 100  '図形の縦幅

  '正方形を作って変数 myrec に入れます
  Set myrec = ActiveSheet.Shapes.AddShape(msoShapeRectangle, x, y, wd, ht)

  With myrec

    '図形の背景色を青にします
    .Fill.ForeColor.RGB = vbBlue

    '図形の枠線を無しに設定します
    .Line.Visible = False

  End With

  For t = 1 To 90
    '時計回りに 1° 回転させます
    myrec.IncrementRotation (1)
    Application.Wait [Now() + "0:00:00.1"]
  Next t

End Sub

Rotate_Rectangle() を実行すると青い正方形が現れて時計回りに回転します。
 
今回のサンプルコード Rotate_Rectangle() でポイントとなるのは

myrec.IncrementRotation(1)

です。これはオブジェクト myrec に対して IncrementRotation メソッドで図形を 1° だけ回転させています。

Application.Wait [Now() + "0:00:00.1"]

によって処理速度をコンマ 1 秒待たせることによって、図形がゆっくりと回転するように見えるのです。IncrementRotation は、図形を z 軸の周りに今ある位置から指定引数だけ 時計回りに回転させる メソッドです。回転方向を逆にしたい場合は

myrec.IncrementRotation(-1)

のように負の値を引数に指定します。元の位置からの回転角度を設定する場合は Rotation プロパティを使用します。
 
➡【VBA】Waitメソッドで処理を一時停止します

コメント