ContourWidth【カウントアワイズ】プロパティ
3-D図形に輪郭を設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのContourWidth【カウントアワイズ】プロパティを使用します。
ContourWidth【カウントアワイズ】プロパティの書式と設定値の説明
オブジェクト.ContourWidth = 設定値
- オブジェクト(必須)
Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した図形を表す、Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。 - 設定値(必須)
輪郭の幅をポイント単位で設定します。0~1584ポイントの範囲の単精度浮動小数点型 ( Single ) の値で設定します。1ポイントは約0.35ミリでセルの行の高さと同じ単位です。
ContourColor 【カウントアカラー】 プロパティ
3-D図形の輪郭の色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトを取得するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのContourColor 【カウントアカラー】 プロパティを使用します。
ContourColor 【カウントアカラー】 プロパティの書式と設定値の説明
オブジェクト.ContourColor .プロパティ = 設定値
- オブジェクト(必須)
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("B3:C8") Set 図形 = ActiveSheet.Shapes.AddShape(9, R.Left, R.Top, R.Width, R.Height) For i = 1 To 50 Step 0.1 With 図形.ThreeD .BevelTopType = 3 .ContourWidth = i .ContourColor.RGB = RGB(255, 0, 0) .ContourColor.TintAndShade = 0.3 DoEvents End With Next i For i = 50 To 0 Step -0.1 図形.ThreeD.ContourWidth = i DoEvents Next i End Sub
【Dim R As Range】
図形の位置と大きさの基準となるセルを格納する変数「R」をオブジェクト型(Range)で宣言します。
3行目【Dim 図形 As Shape】
AddShape【アドシェイプ】メソッドで作成した図形を格納する変数「図形」をオブジェクト型(Shape)で宣言します。
4行目【Dim i As Single】
繰り返し処理の中で、奥行きの長さを設定するDepth【ディプス】プロパティに設定する長さのポイントの値を格納するカウンター変数「i」を単精度浮動小数点型 (Single)で宣言します。
5行目【Set R = Range(“B3:C8”)】
図形の位置と大きさの基準となるB3セル~C8セルのセル範囲をオブジェクト型変数「R」にSetキーワードを使用して格納します。
6行目【Set 図形 = ActiveSheet.Shapes.AddShape(9, R.Left, R.Top, R.Width, R.Height)】
Worksheet【ワークシート】オブジェクトの図形の集まりを表すShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドを使用して図形を作成してオブジェクト変数「図形」にSetキーワードを使用して格納します。
7行目【For i = 1 To 50 Step 0.1】
For Next【フォアネクスト】ステートメントを使用して繰り返し処理の始まりです。カウンター変数「i」に1~50の値をStepに設定した加算値0.1ずつ順次代入します。
8行目【With 図形.ThreeD】
変数「図形」に格納されている図形を表す、Shape【シェイプ】オブジェクトのThreeD【スリーディ】プロパティを使用して立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトを取得して、With【ウィズ】ステートメントで指定します。
9行目【.BevelTopType = 3】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの図形の表面の面取りを設定するBevelTopType【ベベルトップタイプ】プロパティに円形を表す定数の値3を設定します。
10行目【.ContourWidth = i】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの図形に奥行きの長さを設定するContourWidth【カウントアワイズ】プロパティにカウンター変数のiを設定して繰り返し処理の中で1~50の値が0.1ずつ加算されて設定されます。
11行目【 .ContourColor.RGB = RGB(255, 0, 0)】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのContourColor【カウントアカラー】プロパティを使用して図形の輪郭の色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトを取得して、ColorFormat【カラーフォーマット】オブジェクトの色を設定するRGB【アールジービー】プロパティにRGB関数を使用して色を設定します。
12行目【.ContourColor.TintAndShade = 0.3】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのContourColor【カウントアカラー】プロパティを使用して図形の奥行きの色の書式設定を表すColorFormat【カラーフォーマット】オブジェクトを取得してColorFormat【カラーフォーマット】オブジェクトの色の濃さを設定するTintAndShade【テントアンドシャドウ】プロパティに0.3を設定します。
13行目【DoEvents】
DoEvents【ドゥイベンツ】関数を使用して繰り返し処理の制御を一時的にオペレーティングシステムに戻し図形をセルに描画します。DoEvents【ドゥイベンツ】関数を使用しないと図形の描画が行われないで処理が終了してしまいます。
15行目【Next i】
ここまでの処理を7行目から500回繰り返して(加算値が0.1で50回のため)図形の輪郭の幅を設定するContourWidth【カウントアワイズ】プロパティの設定値に図形の奥行きの長さを0.1ポイントずつ50まで加算していきDoEvents【ドゥイベンツ】関数を使用して
繰り返し処理の制御を1回ずつOSに戻して、図形の状態を描画して図形の輪郭が拡大する状態を表現します。
16行目【For i = 50 To 0 Step -0.1】
ここからは50ポイントまで拡大した図形の輪郭を0ポイント(輪郭なし)まで順次描画するコードです。For Next【フォアネクスト】ステートメントを使用して繰り返し処理の中でカウンター変数「i」に50~0の値を-0.1ずつ減算して代入します。
17行目【図形.ThreeD.ContourWidth = i】
AddShape【アドシェイプ】メソッドで追加した、図形を表すShape【シェイプ】オブジェクトが格納されているオブジェクト変数「図形」のThreeD【スリーディ】プロパティで取得した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの図形の輪郭の大きさを設定するContourWidth【カウントアワイズ】プロパティにカウンター変数「i」を設定します。
18行目【DoEvents】
DoEvents【ドゥイベンツ】関数を使用して、繰り返し処理の制御を一時的にオペレーティングシステムに戻し図形をセルに描画します。
以上で、図形(シェイプ)に輪郭を設定する方法についての解説を終了します。ありがとうございました。