Excel VBA 図形(オートシェイプ)を取得する方法

図形作成/操作

VBAで作成済みの図形(オートシェイプ)を取得する方法をご説明します。

図形を取得、操作するにはオートシェイプオブジェクトを取得します。

取得または指定する方法はグラフ等の操作と同様に、番号や名前で出来ます。

オートシェイプオブジェクト取得や指定することで、その図形の細かい操作をすることができるようになります。

その他の図形(オートシェイプ)の操作については、次の記事をご覧ください。

1.図形(オートシェイプ)を取得する

オートシェイプを取得するには、Sheetオブジェクト内のShapesプロパティで取得します。

文頭でも記載しましたが、番号や名前で取得が可能です。

図形の番号で取得する

図形は作成すると自動的に番号が番号が振られます。

この番号を指定する事で取得が可能です。

次のように記述します。

ActiveSheet.Shapes(1)
図形の名前で取得する

図形は名前で指定する事が可能です。

名前は任意で付ける事もできますが、作成時に指定しなかった場合は図形の種類と番号が自動的に付与されます。

より細かい操作を想定する場合は、図形作成時にルールを設けて名前を付ける事を推奨します。

図形を名前で指定する方法は次のように記述します。

ActiveSheet.Shapes("正方形/長方形 1")

図形の名前を確認したい場合は、次のような手順で簡単に確認する事ができます。

名前を確認したい図形をクリックします。

左上のセルのアドレスが表示される部分に、クリックされている図形の名前が表示されます。

シート上にある図形を一度に確認したい場合は、どれでも良いので図形をクリックして「書式」タブを選択して、「配置」の「オブジェクトの選択と表示」を選択します。

次の様に右側に一覧で確認ができます。

2.1つの図形を操作するサンプルコード

上記の図の様にシートに3つのグラフを用意したサンプルデータを使用します。

名前も図の通りです。

番号を指定して取得する

Sub Sample1()

'図形を指定
With ActiveSheet.Shapes(1)

    '名前を取得する
    MsgBox .Name
    
End With

End Sub

名前を指定して取得する

Sub Sample2()

'Shapeオブジェクトを指定
With ActiveSheet.Shapes("正方形/長方形 2")
    
    '位置とサイズを変更
    .Top = Range("B11").Top  '位置を指定
    .Left = Range("B11").Left '位置を指定
    .Width = Range("B2:D2").Width '幅を指定
    .Height = Range("B2:D5").Height '高さを指定
    
End With

End Sub

3.すべての図形を操作するサンプルコード

ワークシートに作成された全ての図形(オートシェイプ)を操作して色を変更します。

全て操作するにはループで図形を1つずつ取得して、操作します。

For Each~Nextで取得して変更するサンプルコード

図形もオブジェクトなので、For Each~Nextでループして取得する事ができます。

Sub Sample3()

Dim Shp As Shape

  For Each Shp In ActiveSheet.Shapes
  
    With Shp
    
        .Fill.ForeColor.RGB = RGB(255, 255, 0)
    
    End With
    
  Next Shp

End Sub

For~Nextで取得して変更するサンプルコード

For~Nextでループする場合には図形の数を取得する必要があります。

その場合は「Count」で取得可能です。

Sub Sample4()

Dim i As Long

With ActiveSheet

  For i = 1 To .Shapes.Count
  
    With .Shapes(i)
    
        .Fill.ForeColor.RGB = RGB(255, 0, 0)
    
    End With
    
  Next i
  
End With

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