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を設定します。


実行結果


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

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

フォローする

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