Shapeを使う - マクロ記録の変更
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はたくさんの種類がありますが、基本はマクロ記録です。
ぜひお試しください。

Excel97,2000



戻る


Excel Word Access VBA! モーグ