VBATips

オートシェイプが存在するセル位置(セル番地)を取得する【ExcelVBA】

オートシェイプが存在するセル位置(セル番地)を取得したい

開発案件でたまにオートシェイプの位置からプログラムを分岐させるケースがあります。
オートシェイプにはAddressの概念はないため、
オートシェイプが存在する左上のセル位置や右下のセル位置で判断します。

オートシェイプが存在するセル位置を表示するサンプルコード

上記の位置を取得する場合は以下です。

Public Sub sample()
    '■Shapeを変数にいれる
    Dim shp As Shape:  Set shp = ActiveSheet.Shapes(1)
    
    '■アドレス形式で取得(相対参照)
    Debug.Print shp.TopLeftCell.Address(False, False)       'B3
    Debug.Print shp.BottomRightCell.Address(False, False)   'G12

    '■アドレス形式で取得(絶対参照)
    Debug.Print shp.TopLeftCell.Address      '$B$3
    Debug.Print shp.BottomRightCell.Address  '$G$12

    '■アドレス形式で取得(Cell形式=Column/Row)
    Debug.Print shp.TopLeftCell.Column      '2
    Debug.Print shp.TopLeftCell.Row         '3
    Debug.Print shp.BottomRightCell.Column  '7
    Debug.Print shp.BottomRightCell.Row     '12
End Sub

注意点

  • 特にありません。

関連記事

コメント

タイトルとURLをコピーしました