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

スポンサーリンク

図形(シェイプ)に反射を設定する方法

図形(シェイプ)に反射を設定するには、反射の書式設定を表すReflectionFormat【リスレクションフォーマット】オブジェクトの反射のタイプを設定するType【タイプ】プロパティに反射のタイプを表す定数を指定して、図形に反射を設定します。

Reflection【リフレクション】プロパティ

図形の反射の書式設定を表すReflectionFormat【リスレクションフォーマット】オブジェクトを取得するには、図形を表すShape【シェイプ】オブジェクトのReflection【リフレクション】プロパティを使用します。

Reflection【リフレクション】プロパティの書式と設定値の説明

オブジェクト.Reflection
【戻り値】ReflectionFormat【リスレクションフォーマット】オブジェクト

  • オブジェクト(必須)
    Worksheet【ワークブック】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShapeメソッドで取得した反射を設定する図形を表すShape【シェイプ】オブジェクトを指定します。

Type【タイプ】プロパティ

図形の反射のタイプを指定して、図形に反射を設定するには、図形の反射の書式設定を表す
ReflectionFormat【リスレクションフォーマット】オブジェクトのType【タイプ】プロパティを使用します。

Type【タイプ】プロパティの書式と設定値の説明

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

  • オブジェクト(必須)
    Shape【シェイプ】オブジェクトのReflection【リフレクション】プロパティで取得した
    ReflectionFormat【リスレクションフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    反射のタイプをMsoReflectionType列挙型の定数または値で指定します。

    MsoReflectionType列挙型
    定数内容スタイル
    msoReflectionTypeNone0反射をクリアします。
    msoReflectionType11反射(弱)オフセットなし
    msoReflectionType22反射(中)オフセットなし
    msoReflectionType33反射(強)オフセットなし
    msoReflectionType44反射(弱)4ptオフセット
    msoReflectionType55反射(中)4ptオフセット
    msoReflectionType66反射(強)4ptオフセット
    msoReflectionType77反射(弱)8ptオフセット
    msoReflectionType88反射(中)8ptオフセット
    msoReflectionType99反射(強)8ptオフセット

指定したセル範囲に長方形を作成してタイプ6の反射を設定するコードと解説

Sub 反射()
Dim R As Range
Set R = Range("B2:C4")
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height)
.Reflection.Type = 6
End With
End Sub
2行目【Dim R As Range】
図形の大きさや場所を設定するセル範囲を格納する変数「R」をオブジェクト型(Range)で宣言します。


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


4行目【With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height)】
図形の集まりを表すShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで長方形の図形を作成してWith【ウィズ】ステートメントで指定します。


5行目【.Reflection.Type = 6】
With【ウィズ】ステートメントで指定した図形を表す、Shape【シェイプ】オブジェクトのReflection【リツレクション】プロパティを使用して反射の書式設定を表すReflectionFormat【リフレクションフォーマット】オブジェクトを取得し、Type【タイプ】メソッドを使用して
反射のタイプを6に設定します。


実行結果


円柱(シェイプ)の9種類の反射を表示するコードと解説

Sub 反射2()
Dim i As Integer
Dim R As Range
For i = 1 To 9
Set R = Cells(2, i)
With ActiveSheet.Shapes.AddShape(13, R.Left, R.Top, R.Width, R.Height)
    .Reflection.Type = i
End With
Next i
End Sub
2行目【Dim i As Integer】
反射のタイプを表す値とセルの列番号を兼ねる繰り返し処理で使用されるカウンター変数の「i」を整数型(Integer)で宣言します。


3行目【Dim R As Range】
図形の大きさや場所を設定するセル範囲を格納する変数「R」をオブジェクト型(Range)で宣言します。


4行目【For i = 1 To 9】
For Next【フォアネクスト】ステートメントで繰り返し処理の始まりです。カウンター変数iに1から9までの値が順次代入されます。


5行目【Set R = Cells(2, i)】
セル2行目のi列つまり、繰り返しの中で1列~9列の値が順次設定されSetステートメントを使用してオブジェクト変数の「R」に代入します。


6行目【With ActiveSheet.Shapes.AddShape(13, R.Left, R.Top, R.Width, R.Height)】
図形の集まりを表すShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで円柱の図形を作成して、With【ウィズ】ステートメントで指定します。


7行目【.Reflection.Type = i】
With【ウィズ】ステートメントで指定した図形を表す、Shape【シェイプ】オブジェクトのReflection【リツレクション】プロパティを使用して反射の書式設定を表すReflectionFormat【リフレクションフォーマット】オブジェクトを取得しType【タイプ】メソッドを使用して
反射のタイプをカウンター変数「i」に設定し繰り返し処理の中で1から9の値を順次格納して表示します。


実行結果


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

スポンサーリンク

関連記事・広告