Excel VBA 図形(シェイプ)に奥行きを設定する

スポンサーリンク

Depth【ディプス】 プロパティ

3-D図形に奥行きを設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのDepth【ディプス】 プロパティ を使用します。

Depth【ディプス】 プロパティの書式と設定値の説明

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

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した図形を表す、Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    奥行きの長さをポイント単位で設定します。0~1584ポイントの範囲の単精度浮動小数点型 ( Single ) の値で設定します。1ポイントは約0.35ミリでセルの行の高さと同じ単位です。

ExtrusionColor【エクストリジョンカラー】 プロパティ

3-D図形の奥行きの色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトを取得するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのExtrusionColor【エクストリジョンカラー】 プロパティを使用します。

ExtrusionColor【エクストリジョンカラー】 プロパティの書式と設定値の説明

オブジェクト.ExtrusionColor.プロパティ = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した図形を表す、Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • プロパティ = 設定値(必須)
    取得した3-D図形の奥行きの色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトのプロパティを設定します。

    主なColorFormatオブジェクトプロパティ一覧
    プロパティ設定値
    RGB
    【アールジービー】
    設定値はRGB関数を使用して
    奥行きの色を指定します。
    TintAndShade
    【テントアンドシャドゥ】
    色の濃度を設定します。
    設置値は-1(最も濃い)~1(最も薄い)の間の
    単精度浮動小数点型 (Single)の値を設定します。

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


3-D図形に奥行きを設定するコードと解説

Sub 奥行き()
Dim R As Range
Dim 図形 As Shape
Dim i As Single
Set R = Range("B6")
Set 図形 = ActiveSheet.Shapes.AddShape(5, R.Left, R.Top, R.Width, R.Height)
For i = 1 To 200
   With 図形.ThreeD
         .BevelTopType = 3
         .BevelBottomType = 3
         .SetPresetCamera (28)
         .Depth = i
         .ExtrusionColor.RGB = RGB(255, 0, 0)
         .ExtrusionColor.TintAndShade = -0.1
    DoEvents
End With
Next i
For i = 200 To 0 Step -1
    図形.ThreeD.Depth = i
    DoEvents
 Next i
End Sub
2行目【Dim R As Range】
図形の位置と大きさの基準となるセルを格納する変数「R」をオブジェクト型(Range)で宣言します。


3行目【Dim 図形 As Shape】
AddShape【アドシェイプ】メソッドで作成した図形を格納する変数「図形」をオブジェクト型(Shape)で宣言します。


4行目【Dim i As Single】
繰り返し処理の中で、奥行きの長さを設定するDepth【ディプス】プロパティに設定する長さのポイントの値を格納するカウンター変数「i」を単精度浮動小数点型 (Single)で宣言します。


5行目【Set R = Range(“B6”)】
図形の位置と大きさの基準となるB6セルをオブジェクト型変数「R」にSetキーワードを使用して格納します。


6行目【Set 図形 = ActiveSheet.Shapes.AddShape(5, R.Left, R.Top, R.Width, R.Height)】
Worksheet【ワークシート】オブジェクトの図形の集まりを表すShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドを使用して図形を作成してオブジェクト変数「図形」にSetキーワードを使用して格納します。


7行目【For i = 1 To 200】
For Next【フォアネクスト】ステートメントを使用して繰り返し処理の始まりです。カウンター変数「i」に1~200の値を加算値1ずつ順次代入します。


8行目【With 図形.ThreeD】
変数「図形」に格納されている図形を表す、Shape【シェイプ】オブジェクトのThreeD【スリーディ】プロパティを使用して立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトを取得してWith【ウィズ】ステートメントで指定します。


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


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


11行目【.SetPresetCamera (28)】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの
図形の視点を設定するSetPresetCamera【セットプリセットカメラ】プロパティに等角投影(不等角投影1左)を表す定数の値28を設定します。


12行目【.Depth = i】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの図形に奥行きの長さを設定するDepth【ディプス】プロパティにカウンター変数のiを設定して繰り返し処理の中で1~200の値が設定されます。


13行目【.ExtrusionColor.RGB = RGB(255, 0, 0)】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのExtrusionColor【エクストリジョンカラー】プロパティを使用して図形の奥行きの色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトを取得してColorFormat【カラーフォーマット】オブジェクトの色を設定するRGB【アールジービー】プロパティにRGB関数を使用して色を設定します。


14行目【.ExtrusionColor.TintAndShade = -0.1】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのExtrusionColor【エクストリジョンカラー】プロパティを使用して図形の奥行きの色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトを取得してColorFormat【カラーフォーマット】オブジェクトの色の濃さを設定するTintAndShade【テントアンドシャドウ】プロパティに-0.1を設定します。


15行目【DoEvents】
DoEvents【ドゥイベンツ】関数を使用して繰り返し処理の制御を一時的にオペレーティングシステムに戻し図形をセルに描画します。DoEvents【ドゥイベンツ】関数を使用しないと図形の描画が行われないで処理が終了してしまいます。


17行目【Next i】
ここまでの処理を7行目から200回繰り返して図形の奥行きの長さを設定するDepth【ディプス】プロパティの設定値に図形の奥行きの長さを1ポイントずつ200まで加算していき、DoEvents【ドゥイベンツ】関数を使用して繰り返し処理の制御を1回ずつOSに戻して図形の状態を描画して図形の奥行きが伸びる状態を表現します。


18行目【For i = 200 To 0 Step -1】
ここからは200ポイントまで伸びた図形の奥行きを0ポイント(奥行きなし)まで順次描画するコードです。For Next【フォアネクスト】ステートメントを使用して繰り返し処理の中でカウンター変数「i」に200~0の値を-1ずつ減算して代入します。


19行目【図形.ThreeD.Depth = i】
AddShape【アドシェイプ】メソッドで追加した図形を表すShape【シェイプ】オブジェクトが格納されているオブジェクト変数「図形」のThreeD【スリーディ】プロパティで取得した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの図形の奥行きの長さを設定するDepth【ディプス】プロパティにカウンター変数「i」を設定します。


20行目【DoEvents】
DoEvents【ドゥイベンツ】関数を使用して繰り返し処理の制御を一時的にオペレーティングシステムに戻し図形をセルに描画します。


以上で、図形(シェイプ)に奥行きを設定する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告