こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelのマクロでフリーフォームの作成について

Excel2010です。
マクロの記録でフリーフォームを作成するマクロを作りました。
角が1つある直線のフリーフォームです。

Sub Macro1()

With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 50, 50)
.AddNodes msoSegmentLine, msoEditingAuto, 100, 150
.AddNodes msoSegmentLine, msoEditingAuto, 150, 150
End With
End Sub


マクロを実行した後、「頂点の編集」で真ん中の頂点を移動すると片側の線が曲線になってしまいました。
マクロを使わず、同じフリーフォームを直接描画して頂点を移動すると曲線にはなりません。
マクロで描画後に毎回「線分を伸ばす」で直線にするのは面倒なので、はじめから曲線にならないようにするには、マクロをどう直せば良いでしょうか?

またマクロでできあがる線は、真ん中の頂点がない直線でもかまいません。
目的はマクロで出来た線に「頂点の追加」で角を数カ所追加することです。
角の位置はその都度変わります。
このブックはExcel2003、2007、2010で使用する予定です。
もしくは、フリーフォームが曲線にならないようにExcelの設定を変えてしまう方法でもかまいません。

どうぞよろしくお願いします。

投稿日時 - 2012-03-09 18:22:50

QNo.7352325

すぐに回答ほしいです

質問者が選んだベストアンサー

「フリーハンド」はVBAだと理解しにくいものの1つです。
いろいろ試して自分で理解し覚えていくしかありません。
手動でもマクロでも頂点を追加してからその点を動かさないと曲線になります。

With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 170.25, 45)
.AddNodes msoSegmentLine, msoEditingAuto, 171, 165
.ConvertToShape.Select
End With
Selection.ShapeRange.Nodes.Insert 1, msoSegmentCurve, msoEditingAuto, 30, 61.5

投稿日時 - 2012-03-10 00:35:56

お礼

どうもありあとうございました。
2010で直線になるようにするとそれが2007では曲線になり、2007でマクロを修正すると2010で曲線になる。。。の状態で悩んでいました。
示していただいたマクロも2007で実行すると曲線になってしまいましたが、ご説明でどうにもならないことと理解しました。
ですがこれを参考にさせていただいて、間に頂点を2つもうける事で直線のまま頂点を編集することができるようになりました。
大変参考になりました。
ありがとうございました。

投稿日時 - 2012-03-10 23:40:49

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問