Option Explicit
Option Base 0
Public Sub 丸く並ぶ矢印描画マクロ()
Const CIRCXPOS = 200 '円の中心位置 X
Const CIRCYPOS = 180 ' Y
Const CIRCRADI = 100 '円の半径
Const ARRWCONT = 12 '矢印の数
Const ARRWWIDT = 30 '矢印の幅
Const ARRWHEIG = 25 '矢印の高さ
Const ARRBAPHT = 0.4 '矢印の高さに対する棒の太さ比率
Const ARRHDPHT = 0.3 '矢印の高さに対する頭の部分比率
'---------------------------------------------------------------------------
Dim Ip As Integer, intAng As Integer
Dim intXp As Integer, intYp As Integer, dblRd As Double
'
dblRd = (4 * Atn(1)) / 180
intAng = 360 \ ARRWCONT
For Ip = 0 To ARRWCONT - 1
intXp = CIRCRADI * Cos(dblRd * (intAng * Ip)) + CIRCXPOS
intYp = CIRCRADI * Sin(dblRd * (intAng * Ip)) + CIRCYPOS
'
With ActiveDocument.Shapes.AddShape(msoShapeRightArrow, _
intXp - ARRWWIDT \ 2, intYp - ARRWHEIG \ 2, _
ARRWWIDT, ARRWHEIG)
.Fill.ForeColor.RGB = RGB(0, 255, 0) '←塗りつぶし色
.Fill.Visible = True
.Line.ForeColor.RGB = RGB(0, 0, 255) '←線色
.Line.Visible = True
.Adjustments(1) = ARRBAPHT
.Adjustments(2) = ARRHDPHT
.Rotation = intAng * Ip + 90
End With
'
Next Ip
'
End Sub
Const ARRWCONT = 6 '矢印の数
Const ARRWCONT = 18 '矢印の数
With ActiveDocument.Shapes.AddShape(msoShapeLeftArrow, _
.Rotation = intAng * Ip + 0
.Rotation = intAng * Ip + 180
Const ARRBAPHT = 0.1 '矢印の高さに対する棒の太さ比率
Const ARRHDPHT = 0.8 '矢印の高さに対する頭の部分比率