Excel VBA 図形(シェイプ)を3-D回転効果で回転させる

スポンサーリンク

図形(シェイプ)を3-D回転効果で回転させる方法

図形を3-D回転効果を設定するには、図形を表すShape【シェイプ】オブジェクトのThreeD【スリーディ】プロパティで立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトを取得し、ThreeDFormat【スリーディフォーマット】オブジェクトのSetpresetCamera【セットプリセットカメラ】メソッドを使用して図形の視点の種類を設定し、RotationX【ローティーションエックス】プロパティにX軸
RotationY【ローティーションワイ】プロパティにY軸、RotationZ【ローテーションゼット】プロパティにZ軸周りの絶対角度を設定して図形(シェイプ)の配置の角度を設定します。

RotationX【ローティーションエックス】プロパティ

図形(シェイプ)のX軸方向の絶対角度を取得または設定するには、立体の書式設定を表す
ThreeDFormat【スリーディフォーマット】オブジェクトのRotationX【ローテーションエックス】プロパティを使用します。

RotationX【ローテーションエックス】プロパティの書式と設定値の説明

オブジェクト.RotationX = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShepes【シェイプス】プロパティ、またはShaeps【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した図形を表すShape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    図形の正面を0度としてX軸方向の回転角度を絶対角度で指定します。回転方向が右の場合は正の値で0~359.9度の間の値を指定します。回転方向が左の場合は-359.9~0度の間の値を指定します。単精度浮動小数点型 (Single)の値を使用します。

RotationY【ローティーションワイ】プロパティ

図形(シェイプ)のY軸方向の絶対角度を取得または設定するには、立体の書式設定を表す
ThreeDFormat【スリーディフォーマット】オブジェクトのRotationY【ローテーションワイ】プロパティを使用します。

RotationY【ローテーションワイ】プロパティの書式と設定値の説明

オブジェクト.RotationY = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShepes【シェイプス】プロパティ、またはShaeps【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した図形を表すShape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した立体の書式設定を表す
    TreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    図形の正面を0度としてY軸方向の回転角度を絶対角度で指定します。回転方向が下の場合は正の値で0~359.9度の間の値を指定します。回転方向が上の場合は-359.9~0度の間の値を指定します。単精度浮動小数点型 (Single)の値を使用します。

RotationZ【ローティーションゼット】プロパティ

図形(シェイプ)のY軸方向の絶対角度を取得または設定するには、立体の書式設定を表す
ThreeDFormat【スリーディフォーマット】オブジェクトのRotationZ【ローテーションゼット】プロパティを使用します。

RotationZ【ローテーションゼット】プロパティの書式と設定値の説明

オブジェクト.RotationZ = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShepes【シェイプス】プロパティ、またはShaeps【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した図形を表すShape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した立体の書式設定を表す
    TreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    図形の正面を0度としてZ軸方向の回転角度を絶対角度で指定します。回転方向が時計回りの場合は正の値で0~359.9度の間の値を指定します。回転方向が反時計回りの場合は-359.9~0度の間の値を指定します。単精度浮動小数点型 (Single)の値を使用します。

図形(シェイプ)をX軸、Y軸、Z軸を基準に回転させるコードと解説

Sub 図形回転()
Dim R As Range
Dim i As Single
Set R = Range("B3:C5")
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height).ThreeD
.BevelTopType = 6
.BevelBottomType = 6
.SetPresetCamera (19)
For i = 0 To 359.5 Step 0.5
.RotationX = i
DoEvents
Next i
For i = 0 To 359.5 Step 0.5
.RotationY = i
DoEvents
Next i
For i = 0 To 359.5 Step 0.5
.RotationZ = i
DoEvents
Next i
End With
End Sub
2行目【Dim R As Range】
図形の位置と大きさの基準となるセル範囲を格納する変数「R」をオブジェクト型(Range)で宣言します。


3行目【Dim i As Single】
図形の角度を格納する繰り返し処理で使用されるカウンター変数「i」を単精度浮動小数点型(Single)で宣言します。


4行目【Set R = Range(“B3:C5”)】
B3セル~C5セルのセル範囲をSetキーワードを使用してオブジェクト型変数Rに代入します。


5行目【With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height).ThreeD】
Worksheet【ワークシート】オブジェクトの図形の集まりを表すShapes【シェイプス】コレクションの
AddShape【アドシェイプ】メソッドを使用して図形を表す、Shape【シェイプ】オブジェクトを取得します。

取得したShape【シェイプ】オブジェクトのThreeD【スリーディ】プロパティを使用して
立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトを取得してWith【ウィズ】ステートメントで指定します。


6行目【.BevelTopType = 6】
With【ウィズ】ステートメントで指定した立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトの
図形の表面の面取りのタイプを設定するBevelTopType【ベベルトップタイプ】プロパティに6の「msoBevelAngle」を設定します。


7行目【.BevelBottomType = 6】
With【ウィズ】ステートメントで指定した立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトの
図形の裏面の面取りのタイプを設定するBevelBottomType【ベベルボトムタイプ】プロパティに6の「msoBevelAngle」を設定します。


8行目【.SetPresetCamera (19)】
With【ウィズ】ステートメントで指定した立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトのカメラの視点の位置を設定するSetPresetCamera【セットプリセットカメラ】プロパティに正射投影を表す19を設定します。


9行目【For i = 0 To 359.5 Step 0.5】
For Next【フォアネクスト】ステートメントを使用して繰り返し処理の始まりです。カウンター変数「i」に角度を表す0~359.5の値を順次代入していきます。
Step【ステップ】キーワードに0.5を設定して0.5ずつ加算するように設定します。角度の最終値は359.9ですが、加算値が0.5ずつなので359.5までとします。


10行目【.RotationX = i】
With【ウィズ】ステートメントで指定した立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトの
図形のX軸の角度を設定するRotationX【ローテーションエックス】プロパティにカウンター変数iを設定します。


11行目【DoEvents】
DoEvents【ドゥイベンツ】関数を使用して、繰り返し処理のイベントを一時的にオペレーティングシステムに渡し図形を再描画させて、図形の移動を描画します。この関数を使用しないと図形の角度の変更はバックグラウンドで行われ描画されている図形は動きません。


13行目以降
図形のY軸の角度を設定するRotationY【ローテーションワイ】プロパティ図形のZ軸の角度を設定するRotationZ【ローテーションゼット】プロパティの設定のコードです。内容は9~11行目の図形のX軸の角度を設定するRotationX【ローテーションエックス】プロパティと同じです。


実行イメージ(実際はもっとスムーズに動きます)


以上で、図形(シェイプ)を3-D回転効果で回転させる方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告