'図形を選択
ActiveSheet.Shapes("四角形: 角を丸くする 1").Select
'図形をオブジェクトに格納して選択
Set a = ActiveSheet.Shapes("四角形: 角を丸くする 1") '図形をオブジェクトに格納
a.Select '図形を選択'複数の図形を選択
ActiveSheet.Shapes("四角形: 角を丸くする 1").Select '図形を選択
ActiveSheet.Shapes("四角形: 角を丸くする 2").Select Replace:=False '図形を「追加」で選択
ActiveSheet.Shapes("四角形: 角を丸くする 3").Select Replace:=False '図形を「追加」で選択'図形を全て選択①
ActiveSheet.Shapes.SelectAll
'図形を全て選択②
For i = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(i).Select Replace:=False '図形を選択
Next
'図形を全て選択③
For Each a In ActiveSheet.Shapes
a.Select Replace:=False '図形を選択
Next
では、図形を選択する方法について、解説していきます。
VBAで個別の図形を選択してみる
VBAで、個別の図形を選択してみます。
「Select」を使うと、図形が選択できます。
「Select」を使って選択する
「Select」を使って、図形を選択してみます。
VBAコードは、こんな感じになります。
Sub TEST1()
'図形を選択
ActiveSheet.Shapes("四角形: 角を丸くする 1").Select
End Sub
セルに名前が「"四角形: 角を丸くする 1"」である、図形を用意しました。
図形を用意
この図形を選択してみます。
Selectで図形を選択
図形を選択できました。
オブジェクトに格納してみる
次は、図形をオブジェクトに格納して、図形を選択してみます。
VBAコードは、こんな感じになります。
Sub TEST2()
'図形をオブジェクトに格納
Set a = ActiveSheet.Shapes("四角形: 角を丸くする 1")
'図形を選択
a.Select
End Sub
Sub TEST7()
'図形をループ
For Each a In ActiveSheet.Shapes
'図形のタイプがオートシェイプの場合
If a.Type = 1 Then
'図形のテキストに「2」が含まれているか判定
If InStr(a.TextFrame.Characters.Text, "2") > 0 Then
'図形を選択
a.Select Replace:=False
End If
End If
Next
End Sub
複数の図形を用意しました。
図形のテキストに、文字を入力しています。
テキストを入力した図形を用意
では、実行してみます。
「2」が含まれる図形だけを選択
テキストに「2」が含まれる図形だけが、選択されました。
こんな感じで、「For Each」を使うと、条件の指定ができて、応用が利きます。
VBAで選択したセル範囲に含まれる図形を選択
次は、ちょっと応用して、選択したセル範囲に含まれる図形を選択する、というのをやってみます。
「Intersect」を使う
選択したセル範囲に含まれる図形を選択するには、「Intersect」を使うと簡単にできます。
VBAコードは、こんな感じになります。
Sub TEST8()
'セル範囲をオブジェクトに格納
Dim Slc
Set Slc = Selection
'図形をループ
For Each Shp In ActiveSheet.Shapes
'図形のセル範囲をオブジェクトに格納
Set a = Range(Shp.TopLeftCell, Shp.BottomRightCell)
'「セル範囲」と「図形のセル範囲」に、共有する部分があるかを判定
If Not Intersect(a, Slc) Is Nothing Then
'図形を選択
Shp.Select Replace:=False
End If
Next
End Sub