Option Explicit
Option Base 0
'
Public Sub ベジェ曲線による丸い波線描画マクロ()
Const BZCWPAIV = 3.141592653589 'π
Const BZCWRADI = (BZCWPAIV / 180) 'π/180
Const BZCWYAMA = 12 '山の数
Const BZCWBZCN = BZCWYAMA * 6 'ベジェ曲線の位置数
'
Const BZCWCXPT = 200 '描画中心位置(X)
Const BZCWCYPT = 180 ' 〃 (Y)
Const BZCWCRAD = 80 '描画半径
Const BZCWAPWD = 15 '波線振れ幅
Const BZCWLNCL = &H8B8B00 '線の色(ダークシアン)
Const BZCWLNWT = 1.5 '線の太さ
'---------------------------------------------------------------------------
Dim Ip As Integer, sngArr(BZCWBZCN, 1) As Single
Dim sngCns As Single, sngAng As Single
Dim sngRad As Single
'
'*ベジェ曲線データ作成
sngCns = (BZCWRADI * (360 / BZCWBZCN))
For Ip = 0 To BZCWBZCN
sngRad = BZCWCRAD _
+ Choose((Ip Mod 6) + 1, 0, 1, 1, 0, -1, -1) * BZCWAPWD
sngArr(Ip, 0) = sngRad * Cos(sngCns * Ip) + BZCWCXPT
sngArr(Ip, 1) = sngRad * Sin(sngCns * Ip) + BZCWCYPT
Next Ip
'
'*ベジェ曲線描画
With ActiveDocument.Shapes.AddCurve(sngArr)
.Line.ForeColor.RGB = BZCWLNCL
.Fill.Visible = msoFalse
.Line.Weight = BZCWLNWT
End With
End Sub