【Word VBA】円と四角形模様描画マクロ▽ソースコード

記事
IT・テクノロジー
HC220902A.png

Option Explicit
Option Base 0
Public Sub 円と四角形模様描画マクロ()
    Const GEOMLEFT = 90                 '描画開始位置X
    Const GEOMTOPP = 80                '      Y
    '
    Const GEOMSWID = 30                '描画幅
    Const GEOMSHEI = GEOMSWID    '描画高さ
    '
    Const GEOMDMT1 = GEOMSWID * 0.8     '円(大)直径
    Const GEOMDMT2 = GEOMSWID * 0.5     '円(小)直径
    '
    Const GEOMVSPC = 0                   '横-間隔
    Const GEOMHSPC = 0                   '縦-間隔
    Const GEOMCOLS = 6                   '横/描画数
    Const GEOMROWS = 5                  '縦/描画数
    '
    Const GEOMLNWE = 1                  '線の太さ
    '---------------------------------------------------------------------------
    Dim Ip As Integer, Jp As Integer
    Dim Kp As Integer
    Dim intDxp As Integer, intDyp As Integer
    Dim lngCol As Long
    '
    lngCol = RGB(34, 139, 34)             '←線色
    For Jp = 0 To GEOMROWS - 1
        intDyp = GEOMTOPP + (GEOMSHEI + GEOMHSPC) * Jp
        For Ip = 0 To GEOMCOLS - 1
            intDxp = GEOMLEFT + (GEOMSWID + GEOMVSPC) * Ip
            '*四角形を描画
            With ActiveDocument.Shapes.AddShape( _
                 msoShapeRectangle, intDxp, intDyp, _
                 GEOMSWID, GEOMSHEI)
                .Fill.Visible = msoFalse
                .Line.Visible = msoTrue
                .Line.ForeColor.RGB = lngCol
                .Line.Weight = GEOMLNWE
            End With
            '*対角線を描画
            For Kp = 0 To 1
                With ActiveDocument.Shapes.AddLine( _
                     intDxp, _
                     intDyp + IIf(Kp = 0, 0, GEOMSHEI), _
                     intDxp + GEOMSWID, _
                     intDyp + IIf(Kp = 1, 0, GEOMSHEI) _
                     ).Line
                     .ForeColor.RGB = lngCol
                     .Weight = GEOMLNWE
                End With
            Next Kp
            '*円(大)を描画
            With ActiveDocument.Shapes.AddShape( _
                 msoShapeOval, _
                 intDxp + (GEOMSWID - GEOMDMT1) / 2, _
                 intDyp + (GEOMSWID - GEOMDMT1) / 2, _
                 GEOMDMT1, GEOMDMT1)
                .Fill.Visible = msoTrue
                .Fill.ForeColor.RGB = vbWhite
                .Line.Visible = msoTrue
                .Line.ForeColor.RGB = lngCol
                .Line.Weight = GEOMLNWE
            End With
            '*十字を描画
            For Kp = 0 To 1
                With ActiveDocument.Shapes.AddLine( _
                     intDxp + IIf(Kp = 0, 0, GEOMSWID / 2), _
                     intDyp + IIf(Kp = 1, 0, GEOMSHEI / 2), _
                     intDxp + IIf(Kp = 0, GEOMSWID, GEOMSWID / 2), _
                     intDyp + IIf(Kp = 1, GEOMSHEI, GEOMSHEI / 2) _
                     ).Line
                     .ForeColor.RGB = lngCol
                     .Weight = GEOMLNWE
                End With
            Next Kp
            '*円(小)を描画
            With ActiveDocument.Shapes.AddShape( _
                 msoShapeOval, _
                 intDxp + (GEOMSWID - GEOMDMT2) / 2, _
                 intDyp + (GEOMSWID - GEOMDMT2) / 2, _
                 GEOMDMT2, GEOMDMT2)
                .Fill.Visible = msoTrue
                .Fill.ForeColor.RGB = vbWhite
                .Line.Visible = msoTrue
                .Line.ForeColor.RGB = lngCol
                .Line.Weight = GEOMLNWE
            End With
        Next Ip
    Next Jp
End Sub
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら