即効テクニック |
Shapeに影をつけるにはShapeのShadowプロパティーを使用してShadowFormatオブジェクトを取得し、各種プロパティーの設定により行います。 以下のサンプルではセル範囲(B2:G7)に青色の影付きShapeを作成します。 また、セル自体への効果であるかのような外見にするために、Shapeの塗りつぶし効果を非表示にしています。
Sub CreateShapeWithShadow() Dim Sh As Shape Dim Rng As Range Dim L As Double, T As Double, W As Double, H As Double '指定セル範囲にあわせてShapeの配置決め Set Rng = ActiveSheet.Range("B2:G7") L = Rng.Left: T = Rng.Top: W = Rng.Width: H = Rng.Height 'Shapeを作成 Set Sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, _ L, T, W, H) Sh.Fill.Visible = False 'Shapeの塗りつぶし効果を非表示 'ShadowFormatの取得 With Sh.Shadow .OffsetX = 10 '水平方向 .OffsetY = -10 '垂直方向 .ForeColor.RGB = vbBlue '影の塗りつぶし .Transparency = 0.5 '透明度 .Obscured = True .Visible = True End With End Sub
※影の水平方向、垂直方向の位置はそれぞれOffsetX,OffsetYプロパティーにより指定し、影の移動はIncrementOffsetX,IncrementOffsetYメソッドを使用します。 ※影の透明度の設定はTrnasparencyプロパティーに0.0(不透明)から1.0(透明)の値を指定します。 ※塗りつぶし効果の非表示:(※FillFormatオブジェクトの非表示)
Sh.Fill.Visible = False Sh.Shadow.Obscured = True