HOME > 即効テクニック > Excel VBA > 図形操作関連のテクニック > Shapeを使う - マクロ記録の変更

即効テクニック

図形操作関連のテクニック

Shapeを使う - マクロ記録の変更

(Excel 97/2000)
1.例えばShapeで四角形を描画する操作をマクロ記録すると・・・
Sub 四角形()
    ActiveSheet.Shapes.AddShape _
    (msoShapeRectangle, 100, 50, 100, 50). _
        Select
End Sub
のようになりますが、シート上でのRange操作のマクロ記録と同じように、Selectする必要は必ずしもありません。

これをVBAで記述しやすいようにするには、通常Shape型で宣言したオブジェクト変数を用意して、Set ステートメントを用います。
Sub 四角形2()

Dim MyShape As Shape

    Set MyShape = ActiveSheet.Shapes.AddShape _
        (msoShapeRectangle, 100, 50, 100, 50)
        
End Sub

2.次に、書式設定の記録マクロの修正です

例えばShapeの色を変えたり、線の太さを指定するときのマクロ記録は
Selection.ShapeRange.Line.Weight = 2
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
などのようになりますが、上の四角形2プロシージャのようにShapeを選択しない場合は・・・
With ActiveSheet.Shapes.Range(MyShape.Name)
    .Line.Weight = 2
    .Fill.ForeColor.SchemeColor = 10
End With
※Range(Array(〜,〜))とすると、一度に複数のShapeを扱うことが出来ます。

3.その他のShape

・楕円
Set Shape1 = ActiveSheet.Shapes.AddShape _
    (msoShapeOval, 100, 150, 100, 100)
・額縁
Set Shape2 = ActiveSheet.Shapes.AddShape _
    (msoShapeBevel, 100, 100, 150, 50)
・上下矢印
Set Shape3 = ActiveSheet.Shapes.AddShape _
    (msoShapeUpDownArrow, 100, 100, 50, 100)
他にもShapeはたくさんの種類がありますが、基本はマクロ記録です。
ぜひお試しください。