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の値を順次格納して表示します。


実行結果


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

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

フォローする

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