人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL VBAでグラデーション付図形を作成したい
EXCEL2007のVBAで、グラデーション付図形を作成したいです。
添付画像に示すように、グラデーションの分岐点が3つあり、赤→緑→青とグラデーションする図形が希望です。

図形作成するところ(AddShape)はわかりましたが、図形のFillObjectに対して3点分岐グラデーションの指定する記述がわかりません。

なお、実現できないという回答は不要ですので無効回答として扱います。

1341606719
●拡大する

●質問者: poppyday
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●100ポイント ベストアンサー

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


poppydayさんのコメント
ご提示ありがとうございました。ホント助かります^^ 例示のコードですと、分岐点が5つになります(OneColorGradientで分岐点が2つ生成されます)ので、このあとにGradientStops.Delete 1を2つ追加することで所望の結果となりました。 また、0.99を1#と記述することで100%位置になりました。

SALINGERさんのコメント
なるほど
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ