【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メソッドで処理を一時停止します
コメント
【AI解説】VBAのIncrementRotation
[ChatGPT] VBA の IncrementRotation メソッドは、指定されたオブジェクトの回転角度を一定の値だけ増やすために使用されます。以下に、IncrementRotationメソッドの使用方法とパラメータの説明を示します。通常、このメソッドは Shape オブジェクトや Chart オブジェクトなどの他のオブジェクトに結び付けて使用されます。例えば、次のようなコードを使用して、Shapeオブジェクトの回転角度を1度増やすことができます。
この例では、ActiveWorkbookオブジェクトのActiveSheetプロパティを使用して、現在アクティブなシートから”MyShape”という名前のShapeオブジェクトを取得しています。そして、IncrementRotationメソッドを使用して回転角度を1度増やしています。
パラメータ:
IncrementRotationメソッドには、1つのパラメータがあります。
Increment: 回転角度の増分を指定します。このパラメータは浮動小数点型の値であり、度数で表されます。正の値を指定すると、回転角度が増加します。負の値を指定すると、回転角度が減少します。上記の例では、Incrementパラメータに1を指定しています。これにより、回転角度が1度増加します。必要に応じて、増分の値を変更することができます。
以上が、VBAのIncrementRotationメソッドの基本的な解説です。このメソッドを使用することで、回転角度を制御し、オブジェクトの見た目や配置を微調整することができます。