|
初めて質問させていただきます。
ぜひ皆さんのお知恵をお借りしたく、よろしくお願いいたします。(Mougにも同じ質問をしていますが、どなたからも回答がいただけていないため、こちらにも投稿させていただきました。)
図形の曲線を使って、波線を描画しています。下記マクロにてExcel2003、2010では問題なく描画できているのですが、2007では、図形が大きくなってしまい、波線になりません。(たとえば、Xtopが350だったとしても左上が0,0のところに行ってしまいます。
よろしくお願いいたします。
一旦、曲線で始点と終点のみの線を引き、頂点の追加で波線としています。頂点を追加すると図形が大きくなってしまいます。
下記はそのプログラム全てです。
2003、2010では問題なく動きます。(2003と2010では、頂点追加時のインデックスを変更しています。これは、2010でエラーとなるのを回避するためです。)
Sub Namisen(Xtop, Ytop, Xbotm, Ybotm, myColor)
W = Xbotm - Xtop '幅
H = Ybotm - Ytop '高さ
Pol = H / Abs(H) '極性(戻り線の場合にマイナスとなる。)
P = 4 '波線のピッチ
Version = Application.Version
With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, Xtop, Ytop)
.AddNodes msoSegmentCurve, msoEditingAuto, Xbotm, Ybotm
.ConvertToShape.Select '書き始めと終りを描画
End With
Selection.ShapeRange.Line.ForeColor.SchemeColor = myColor
For i = 1 * Pol To H / P Step 1 * Pol
Pi = P * i
Px = P * 0.6
If Version < 12 Then
C = 3 * i * Pol - 2 ' C=1,4,7,10,13,16,19・・・ ・
'波を追加 オートシェイプ→線→曲線(描画)右クリック 頂点の編集→頂点の追加
Else
C = Abs(i)
End If
If i Mod 2 = 0 Then
Selection.ShapeRange.Nodes.Insert C, msoSegmentCurve, msoEditingAuto, _
Xtop + (i * W * P / H) - Px, Ytop + Pi
Else
Selection.ShapeRange.Nodes.Insert C, msoSegmentCurve, msoEditingAuto, _
Xtop + (i * W * P / H) + Px, Ytop + Pi
End If
Next i
End Sub
|
|