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回転効果で回転させる方法についての
解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク