Excel VBA 図形(シェイプ)に光源を設定する

スポンサーリンク

図形(シェイプ)に光源を設定する

3D効果を設定した図形(シェイプ)を照らす光源のタイプや強さ、方向などを設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの以下のプロパティを使用して設定します。

3D図形に光源を設定する主なプロパティ一覧

プロパティ内容
PresetLighting
【プリセットライティング】
光源のタイプを設定します。
PresetLightingSoftness
【プリセットライティングソフィネス】
光源の強さを設定します。
PresetLightingDirection
【プリセットライティングディレクション】
光源の方向を設定します。

PresetLighting
【プリセットライティング】プロパティ

3D効果を設定した図形を照らす光源のタイプを設定するには、立体の書式設定を表す
TreeDFormat【スリーディフォーマット】オブジェクトのPresetLighting【プリセットライティング】プロパティを使用します。

PresetLighting【プリセットライティング】プロパティの書式と設定値の説明

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

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した、図形を表Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    光源のタイプをMsoLightRigType列挙型の定数または値で指定します。

    MsoLightRigType列挙型
    名前内容イメージ
    msoLightRigLegacyFlat11フラット1
    msoLightRigLegacyFlat22フラット2
    msoLightRigLegacyFlat33フラット3
    msoLightRigLegacyFlat44フラット4
    msoLightRigLegacyNormal15ノーマル1
    msoLightRigLegacyNormal26ノーマル2
    msoLightRigLegacyNormal37ノーマル3
    msoLightRigLegacyNormal48ノーマル4
    msoLightRigLegacyHarsh19強い効果1
    msoLightRigLegacyHarsh210強い効果2
    msoLightRigLegacyHarsh311強い効果3
    msoLightRigLegacyHarsh412強い効果4
    msoLightRigThreePoint133 点効果(既定値)
    msoLightRigBalanced14バランス効果
    msoLightRigSoft15ソフト効果
    msoLightRigHarsh16直射光効果
    msoLightRigFlood17拡散光効果
    msoLightRigContrasting18コントラスト効果
    msoLightRigMorning19朝効果
    msoLightRigSunrise20日の出効果
    msoLightRigSunset21日の入り効果
    msoLightRigChilly22冷たい効果
    msoLightRigFreezing23寒い効果
    msoLightRigFlat24フラット効果
    msoLightRigTwoPoint252 点効果
    msoLightRigGlow26光彩効果
    msoLightRigBrightRoom27明るい室内効果

PresetLightingSoftness
【プリセットライティングソフィネス】プロパティ

3D効果を設定した図形を照らす光源の強さを設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのPresetLightingSoftness【プリセットライティングソフィネス】プロパティを使用します。

PresetLightingSoftness【プリセットライティングソフィネス】プロパティの書式と設定値の説明

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

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した、図形を表すShape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    光源の強さをMsoPresetLightingSoftness列挙型の定数または値で指定します。

    MsoPresetLightingSoftness列挙型
    定数内容イメージ
    msoLightingDim1暗い光源
    msoLightingNormal2標準の光源(既定値)
    msoLightingBright3明るい光源

※光源のタイプを表すPresetLighting【プリセットライティング】プロパティが未設定または既定値の定数msoLightRigThreePointまたは値13が設定されている場合は、光源の強さを表すPresetLightingSoftness【プリセットライティングソフィネス】プロパティの設定は反映されません。


PresetLightingDirection
【プリセットライティングディレクション】プロパティ

3D効果を設定した図形を中心として、光源の方向を設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのPresetLightingDirection【プリセットライティングディレクション】プロパティを使用します。

PresetLightingDirection【プリセットライティングディレクション】プロパティの書式と設定値の説明

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

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した、図形を表Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    光源の方向を
    MsoPresetLightingDirection列挙型の定数または値で指定します。

    MsoPresetLightingDirection列挙型
    定数内容イメージ
    msoLightingTopLeft1左上
    msoLightingTop2上部(既定値)
    msoLightingTopRight3右上
    msoLightingLeft4
    msoLightingNone5光源なし
    msoLightingRight6
    msoLightingBottomLeft7左下
    msoLightingBottom8下部
    msoLightingBottomRight9右下

27種類の光源タイプを当てた図形を作成するコードと解説

Sub 光源()
Dim R As Range
Dim i As Integer
For i = 1 To 27
Set R = Cells(2, i)
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height).ThreeD
    .BevelTopType = 6
    .BevelTopDepth = 18
    .BevelTopInset = 18
    .PresetLighting = i
    .PresetLightingSoftness = 3
    .PresetLightingDirection = 8
End With
Next i
End Sub
2行目【Dim R As Range】
図形の位置と大きさの基準となるセル範囲を格納する変数「R」をオブジェクト型(Range)で宣言します。


3行目【Dim i As Integer】
セルの列番号と光源のタイプの値を兼ねる繰り返し処理の中で使用されるカウンター変数「i」を整数型(Integer)で宣言します。


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


5行目【Set R = Cells(2, i)】
2行目のi列のセルをオブジェクト変数RにSetキーワードを使用して代入します。


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

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


7行目~9行目【.BevelTopType = 6
.BevelTopDepth = 18
.BevelTopInset = 18】

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

図形の表面の面取りの奥行きをポイント単位で設定するBevelTopDepth【ベベルトップディプス】プロパティに18ポイントを設定します。図形の表面の面取りの高さをポイント単位で設定するBevelTopInset【ベベルトップインセット】プロパティに18ポイントを設定します。


10行目【 .PresetLighting = i】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの光源のタイプを設定するPresetLighting【プリセットライティング】プロパティにカウンター変数iを設定して繰り返し処理の中1~27の値を設定します。


11行目【.PresetLightingSoftness = 3】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの光源の強さを設定するPresetLightingSoftness【プリセットライティングソフィネス】プロパティに「明るい光源」を表す3を設定します。


12行目【 .PresetLightingDirection = 8】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの光源の位置を設定するPresetLightingDirection【プリセットライティングディレクヨン】プロパティに下部からの光源を表す8を設定します。


実行結果


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

スポンサーリンク

関連記事・広告