シェイプ整列 

エクセル中のシェイプを整列させるマクロ version1.0

ホットキーに割り当てると使いやすい。
選択中のセルを基準位置としてセルを整列させる。
間隔は定数MARGIN_BOTTOMに指定する。

'シェイプを整列させる
Sub lineUpShapes()
    Const MARGIN_BOTTOM = 68
    Dim top As Integer: top = Selection.top
    Dim left As Integer: left = Selection.left
    
    For Each sp In ActiveSheet.Shapes
        Set dummyShape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, left, top, 1#, 1#)
        '左上隅のセルを取得するためのダミーシェイプ
        sp.top = dummyShape.TopLeftCell.top
        'Debug.Print dummyShape.TopLeftCell.Address
        '入力用
        Range(dummyShape.TopLeftCell.Address).Offset(-1, 0).Value = " "
        Range(dummyShape.TopLeftCell.Address).Offset(-1, 0).Font.Bold = True
        Range(dummyShape.TopLeftCell.Address).Offset(-1, 0).Font.Size = 15
        dummyShape.Delete
        top = top + sp.height + MARGIN_BOTTOM
        sp.left = left
    Next
End Sub


コメント