EXCEL2007のVBAで、グラデーション付図形を作成したいです。
添付画像に示すように、グラデーションの分岐点が3つあり、赤→緑→青とグラデーションする図形が希望です。
図形作成するところ(AddShape)はわかりましたが、図形のFillObjectに対して3点分岐グラデーションの指定する記述がわかりません。
なお、実現できないという回答は不要ですので無効回答として扱います。
Excel2010で試していますが、2007以降ならできるかと思います。
Sub macro() Dim sp As Shape Set sp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 90, 90, 90, 80) With sp.Fill .ForeColor.RGB = RGB(0, 128, 128) .OneColorGradient msoGradientHorizontal, 1, 1 .GradientStops.Insert RGB(255, 0, 0), 0 .GradientStops.Insert RGB(0, 255, 0), 0.5 .GradientStops.Insert RGB(0, 0, 255), 0.99 End With End Sub
※ わざわざShapeオブジェクトに代入してるのはインテリセンスを使う為で特に意味はありません。
GradientStopsというのが分岐点で分岐点1ならGradientStops.Items(1)で取得できるかと思います。
引数の1番目が色で、2番めが位置なのですが、1だとうまくいかなかったので0.99にしています。
http://msdn.microsoft.com/en-us/library/ff863159.aspx
ご提示ありがとうございました。ホント助かります^^
2012/07/09 20:26:08例示のコードですと、分岐点が5つになります(OneColorGradientで分岐点が2つ生成されます)ので、このあとにGradientStops.Delete 1を2つ追加することで所望の結果となりました。
また、0.99を1#と記述することで100%位置になりました。
なるほど
2012/07/10 13:42:42