このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】図形(Shape)の位置とサイズを指定する方法

2024年3月13日

今回は図形(Shapeオブジェクト)の位置とサイズをVBAで指定する方法を紹介します。

位置は上下左右ではなく、上・高さ・左・幅の4つを指定することによって決めることができます。

位置指定を応用して、図形の位置をセルに合わせる方法もお見せするので、必要に応じて使ってみてください。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

図形の位置とサイズを指定する方法

図形の位置とサイズを指定する方法
図形の位置とサイズを指定する方法

Shapeオブジェクトの位置はTop、Height、Left、Widthの4つのプロパティによって指定します。

このプロパティの関係は上の図のようになります。

上下左右の下と右を指定する部分はないのですが、代わりに高さ(Height)と幅(Width)によって調整することができます。

Sub ShpPos()
    Dim oneShp As Shape
    For Each oneShp In ActiveSheet.Shapes
        '図形の位置をイミディエイトウィンドウに表示
        Debug.Print oneShp.Top
        Debug.Print oneShp.Height
        Debug.Print oneShp.Left
        Debug.Print oneShp.Width
    Next
End Sub

試しにシート上に1つだけShapeオブジェクトを置いた状態で、上のサンプルコードを実行してみてください。

Shapeオブジェクトを動かしつつ、各プロパティの値を確認すると理解できると思います。

図形の位置とサイズをセルに合わせる方法

Sub ShpPosCell()
'アクティブシート上の図形の位置をすべてA1:C3セルに合わせる
    Dim rng As Range: Set rng = Range("A1:C3")
    Dim oneShp As Shape
    For Each oneShp In ActiveSheet.Shapes
        '図形の位置をrng(A1:C3セル)と一致させる
        oneShp.Top = rng.Top
        oneShp.Height = rng.Height
        oneShp.Left = rng.Left
        oneShp.Width = rng.Width
    Next
End Sub

4つのプロパティを応用すると、図形をセルに合わせて配置することもできます。

上のコードを実行すると、アクティブシート上のすべての図形がA1:C3セルと同じ位置に移動します。

        '図形の位置をrng(A1:C3セル)と一致させる
        oneShp.Top = rng.Top
        oneShp.Height = rng.Height
        oneShp.Left = rng.Left
        oneShp.Width = rng.Width

RangeオブジェクトもShapeオブジェクトと同じく4つのプロパティを持っていて、これらを同じ値にすることで位置をピッタリ合わせています。

関連記事:図形の作成方法/グラフの作成方法

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

VBA

Posted by やろまい