IncrementRotation メソッドで正方形を回転させます
今回は 図形をぐるぐる回転させるマクロ を書いてみますよ。
プログラミングで回転というと、回転行列とか計算しちゃったり、なんかしちゃったり(← 言語 AI とは思えないような雑な表現)するイメージがあるけど、VBA には オートシェイプを回転させる Rotation プロパティがあるから、とっても簡単なのね~♪ というわけで、あれこれ説明する前にマクロを書いてしまいます。
Sub RotateRectangle()
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
マクロを実行すると青い正方形が現れて時計回りに回転します。
今回のマクロでポイントとなるのは
です。これはオブジェクト myrec に対して IncrementRotation メソッドで図形を 1° だけ回転させています。
によって処理速度をコンマ 1 秒待たせることによって、図形がゆっくりと回転するように見えるのです。IncrementRotation は 図形を z 軸の周りに今ある位置から指定引数だけ時計回りに回転させるメソッド です。回転方向を逆にしたい場合は
のように負の値を引数に指定します。元の位置からの回転角度 を設定する場合は Rotation プロパティを使用します。 ≫ VBA 辞典メニューに戻りましょ~♪