【Word VBA】鍵盤描画マクロ▽ソースコード

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

Option Explicit
Option Base 0
Public Sub 鍵盤描画マクロ()
    Const KEYBOLFT = 120          '鍵盤描画開始位置 X
    Const KEYBOTOP = 100       '                       Y
    Const KEYWHWID = 35                  '白鍵の幅
    Const KEYWHHEI = 100                 '白鍵の高さ
    Const KEYBLHEI = 60                    '黒鍵の高さ
    '---------------------------------------------------------------------------
    Dim Ip As Integer
    Dim intXp As Integer, intWd As Integer
    Dim varName(0 To 7 + 5 - 1) As Variant
    '
    '*白鍵描画
    For Ip = 1 To 7
        intXp = KEYBOLFT + KEYWHWID * (Ip - 1)
        With ActiveDocument.Shapes.AddShape(msoShapeRectangle, _
             intXp, KEYBOTOP, KEYWHWID, KEYWHHEI)
            .Fill.ForeColor.RGB = vbWhite
            .Fill.Visible = True
            .Line.ForeColor.RGB = vbBlack
            .Line.Visible = True
            varName(Ip - 1) = .Name
        End With
    Next Ip
    '*黒鍵描画
    intWd = (KEYWHWID * 3) \ 5
    For Ip = 1 To 3 Step 2
        intXp = KEYBOLFT + intWd * Ip
        With ActiveDocument.Shapes.AddShape(msoShapeRectangle, _
             intXp, KEYBOTOP, intWd, KEYBLHEI)
            .Fill.ForeColor.RGB = vbBlack
            .Fill.Visible = True
            .Line.ForeColor.RGB = vbBlack
            .Line.Visible = True
            varName(7 + ((Ip - 1) \ 2)) = .Name
        End With
    Next Ip
    '
    intWd = (KEYWHWID * 4) \ 7
    For Ip = 1 To 5 Step 2
        intXp = KEYBOLFT + KEYWHWID * 3 + intWd * Ip
        With ActiveDocument.Shapes.AddShape(msoShapeRectangle, _
             intXp, KEYBOTOP, intWd, KEYBLHEI)
            .Fill.ForeColor.RGB = vbBlack
            .Fill.Visible = True
            .Line.ForeColor.RGB = vbBlack
            .Line.Visible = True
            varName(9 + ((Ip - 1) \ 2)) = .Name
        End With
    Next Ip
    '
    ActiveDocument.Shapes.Range(varName).Group   '←グループ化
End Sub

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら