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