【VBA】画像(Pic)の位置とサイズを指定する方法
今回は画像(Pictureオブジェクト)の位置とサイズをVBAで指定する方法を紹介します。
位置は上下左右ではなく、上・高さ・左・幅の4つを指定することによって決めることができます。
位置指定を応用して、画像の位置をセルに合わせる方法もお見せするので、必要に応じて使ってみてください。
画像の位置とサイズを指定する方法
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つのプロパティを持っていて、これらを同じ値にすることで位置をピッタリ合わせています。