プロが教えるわが家の防犯対策術!

マクロを使って、エクセルのワークシート上に外半径Rの円を描いて、同心の内半径rの円を描きます。(ドーナツの形)
Rやrはセルで指定した数値を取り込みます。
この2円の間を黄色で塗りつぶしたいのですが、できますか?

Worksheets(1).Shapes.AddShape(msoShapeDonut, XC - RO, YC - RO, RO * 2, RO * 2).Select
でドーナツを書くことはできましたが、内円の半径を自由に設定できないので悩んでいます。

Worksheets(1).Shapes.AddShape(msoShapeOval, XC - RO, YC - RO, RO * 2, RO * 2).Select
で外円を描いて、黄色で塗りつぶしておいて

Worksheets(1).Shapes.AddShape(msoShapeOval, XC - RI, YC - RI, RI * 2, RI * 2).Select
で内円を描いて、白で塗りつぶせばいいのですが、内円の中は透過にしたいのです。
普通に透過にしてしまうと下の黄色が出てしまいます。

方法がわかれば「マクロの記録」を使ってなんとかなると思いますが、シェイプに慣れている方にヒントだけでも教えて頂ければありがたいです。

A 回答 (3件)

内円調整ハンドルはなかったですか?


0.5で全円になります。

With ActiveSheet.Shapes
  .AddShape(msoShapeDonut, 10, 10, 200, 200).Adjustments.Item(1) = 0.2
End With
    • good
    • 0
この回答へのお礼

ありがとうございます。
No.1 様の線の太さを縮尺をかけて作る方法で一応望んでいた図が描けたのですが、Adjustments.Item(1)を使うほうがスマートですね。
Adjustments.Item(1) は着色部の厚さ/2Rで作ればいいんですね。
このハンドルを見落としていました。
まだまだ勉強が足りない・・
シェイプでできないことはない(?)みたいなことを聞いたことがあるので、もっと勉強します。
皆さんありがとうございました。

お礼日時:2009/03/02 15:46

出来るかと思ったけど、オートシェイプの書式設定変更はマクロの記録で記録できないようでした。


線の太さも、マクロ中での変更が出来るのかどうかも分かりませんでいたごめんなさい。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Selection.ShapeRange.Line.Weight = 5.5
とかで設定はできるようですよ。

厳密な意味でのCADのような正確さは必要ないので .Line.Weight を操作して描画してみます。

お礼日時:2009/03/02 14:28

ちょっと前の相談で似たようなものがあったけど、作画の線色を黄色にして円の線の太さを大きくする事で対応できるのでは?




必ず同心円になるし、ただ線の太さを変化させたときに図形の大きさが変化してしまうのでそのあたりの計算が難しいかとは思うけど。
「エクセル上にシェイプで二重丸を書くには」の回答画像1
    • good
    • 0
この回答へのお礼

お答えいただきましてありがとうございます。
過去の質問の捜し方が悪かったのか同じような質問をしてしまっていたらすみません。

なるほど、線の太さで対処するんですね。
ただ、図形が管の断面を表していて、その下に箱状の桁を描きます。
その箱も縮尺をかけて描いているので、管と箱のスケールがなるべく正確に表示されるようにしたいんですが・・
お答えを元にもう少し考えて見ます。
ちなみにこちらのPCは、 OS Win XP SP3、Office Excel 2003 SP3です。

お礼日時:2009/03/02 14:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!