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