ボタンや図形に手動でマクロを割り当てる方法とは別で、 VBAでシェイプにマクロを設定する方法になります。
▼参考例

VBAでシェイプを作成
シェイプを作成して、線の太さや色、背景色などの設定をする。 必要であれば影付きや3D書式など他にも設定項目は多数ある。
▼最初のシェイプを作成する
Sub シェイプ作成()
    
    '最初のシェイプを作成(テキスト,左位置,上位置)
    Call シェイプ作成とマクロ設定("あ", 50, 50) 'テキストと位置を渡す
End Sub
▼シェイプ.OnAction = “プロシージャ名” でシェイプにマクロを設定出来る
Sub シェイプ作成とマクロ設定(moji As String, l As Double, t As Double)
    '四角シェイプ作成
    With ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, _
                                    Left:=l, Top:=t, Width:=100, Height:=100)
        'シェイプ設定
        .Name = "四角" & moji 'シェイプの名前
        .Fill.ForeColor.RGB = rgbDeepSkyBlue '塗りつぶし色
        .Line.ForeColor.RGB = rgbBlack '線の色
        .Line.Weight = 1 '線の太さ
        'テキスト設定
        With .TextFrame
            .Characters.Text = moji 'テキスト
            .Characters.Font.Color = rgbBlack 'テキスト色
            .Characters.Font.Size = 64 'フォントサイズ
            .Characters.Font.Bold = True '太字
            .HorizontalAlignment = xlHAlignCenter '左右中央揃え
            .VerticalAlignment = xlVAlignCenter '上下中央揃え
            .MarginLeft = 0     '左余白
            .MarginRight = 0    '右余白
            .MarginTop = 0      '上余白
            .MarginBottom = 0   '下余白
        End With
        .OnAction = "次のシェイプ" 'シェイプにマクロ設定
    End With
End Sub
クリックした時の処理を分岐
▼処理を分岐しておいて、クリックしたシェイプによって異なる処理をさせる
Sub 次のシェイプ()
        
    'クリックしたシェイプ
    Dim shp As Shape
    Set shp = ActiveSheet.Shapes(Application.Caller)
    
    '次に作成するシェイプ位置
    Dim l As Double: l = shp.Left + shp.Width + 5
    Dim t As Double: t = shp.Top
    'クリックしたシェイプの名前で処理を分岐
    Select Case Application.Caller
        Case "四角あ": Call シェイプ作成とマクロ設定("い", l, t)
        Case "四角い": Call シェイプ作成とマクロ設定("う", l, t)
        Case "四角う": Call シェイプ作成とマクロ設定("え", l, t)
        Case "四角え": Call シェイプ作成とマクロ設定("お", l, t)
        Case "四角お": Call 削除
    End Select
    
End Sub
▼最後のシェイプで削除
Sub 削除()
    '全てのシェイプを削除
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next shp
End Sub
今回は参考用なので”あ”を何度もクリックすると”い”がたくさん出来てしまう。 そういう時は「”い”が存在しなかったら」という処理を追加したりする。
スポンサーリンク
					
