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

【VBA】画像(Pic)の位置とサイズを指定する方法

2024年5月30日

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

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

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

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

画像の位置とサイズを指定する方法

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

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

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

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

Sub PicPos()
    Dim onePic As Picture
    For Each onePic In ActiveSheet.Pictures
        '画像の位置をイミディエイトウィンドウに表示
        Debug.Print onePic.Top
        Debug.Print onePic.Height
        Debug.Print onePic.Left
        Debug.Print onePic.Width
    Next
End Sub

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

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

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

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

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

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

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

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

関連記事:図形の位置とサイズを指定する方法

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

VBA

Posted by やろまい