大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、個別または全ての図形を選択する方法について、ご紹介します。図形を選択するには、Shapes、Select、SelectAllを使います。複数の図形を選択するには、Selectの引数に「Replace:=False」を入力します。「For Each」を使って図形を選択すると、条件を付けて選択できるので便利です。

はじめに

この記事では、図形を選択する方法について、ご紹介します。

図形を選択するには、「Select」を使います。

複数の図形を選択するには、Selectの引数に「Replace:=False」を入力すると、できます。

全ての図形を選択したり、条件を付けて図形を選択する際には、「For Each」を使うと応用が利くので、便利です。

では、図形を選択する方法について、解説していきます。

この記事で紹介すること

  • 図形を選択する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードのまとめ

図形を選択するVBAコードを、まとめました。

VBAコードだけ確認したい場合に、ご活用ください。

'図形を選択
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で図形を選択

Selectを使って図形を選択した結果

図形を選択できました。

オブジェクトに格納してみる

次は、図形をオブジェクトに格納して、図形を選択してみます。

VBAコードは、こんな感じになります。

Sub TEST2()
    
    '図形をオブジェクトに格納
    Set a = ActiveSheet.Shapes("四角形: 角を丸くする 1")
    '図形を選択
    a.Select
    
End Sub

先ほどと同じように、名前が「"四角形: 角を丸くする 1"」である、図形を用意しました。

図形を用意

セルに図形を用意

この図形を選択してみます。

オブジェクトに格納して図形を選択

Selectを使って図形を選択した結果

図形を選択できました。

オブジェクトに図形を格納できると、VBAコードをシンプルにすることができるので、便利です。

VBAで複数の図形を選択してみる

次は、複数の図形を選択してみます。

複数の図形を選択する場合は、Selectの引数に「Replace:=False」というように入力します。

「Replace:=False」の引数を使う

Selectの引数に「Replace:=False」を使って、複数の図形を選択してみます。

VBAコードは、こんな感じになります。

Sub TEST3()
    
    '図形を選択
    ActiveSheet.Shapes("四角形: 角を丸くする 1").Select
    '図形を「追加」で選択
    ActiveSheet.Shapes("四角形: 角を丸くする 2").Select Replace:=False
    '図形を「追加」で選択
    ActiveSheet.Shapes("四角形: 角を丸くする 3").Select Replace:=False
    
End Sub

図形を、3つ用意しました。

図形を3つ用意

図形を3つ用意

図形の名前は、わかっているものとして、図形を選択します。

複数の図形を選択

複数の図形を選択した結果

複数の図形を選択できました。

こんな感じに、複数の図形を選択する場合は、「Replace:=False」を使います。

VBAでシート内の全ての図形を選択する

シート内の全ての図形を選択してみます。

やり方は、3パターンあります。

  • 「SelectAll」を使って選択
  • 「Shapes.Count」を使って選択
  • 「For Each」を使って選択する

という感じです。

「SelectAll」が一番簡単です。

応用が利いて、次に簡単なのが、「For Each」を使う方法です。

では、それぞれのパターンで、シート内の図形を全て選択してみます。

「SelectAll」を使って選択

「SelectAll」を使って、全ての図形を選択してみます。

VBAコードは、こんな感じになります。

Sub TEST4()
    
    '全ての図形を選択
    ActiveSheet.Shapes.SelectAll
    
End Sub

複数のセルを用意しました。

複数の図形を用意

複数の図形を用意

では、実行してみます。

全ての図形を選択

全ての図形を選択

全ての図形を選択できました。

SelectAllを使う方法は、一番簡単ですね。

「Shapes.Count」を使って選択

次は、「Shapes.Count」で図形の数を使って、全ての図形を選択してみます。

VBAコードは、こんな感じになります。

Sub TEST5()
    
    '図形を最後までループする
    For i = 1 To ActiveSheet.Shapes.Count
        '図形を選択
        ActiveSheet.Shapes(i).Select Replace:=False
    Next
    
End Sub

複数のセルを用意しました。

複数の図形を用意

複数の図形を用意

では、実行してみます。

全ての図形を選択

全ての図形を選択

全ての図形を選択できました。

「For Each」を使って選択する

最後は、「For Each」を使って、全ての図形を選択してみます。

VBAコードは、こんな感じになります。

Sub TEST6()
        
    '図形をループする
    For Each a In ActiveSheet.Shapes
        '図形を選択
        a.Select Replace:=False
    Next
        
End Sub

複数のセルを用意しました。

複数の図形を用意

複数の図形を用意

では、実行してみます。

全ての図形を選択

全ての図形を選択

全ての図形を選択できました。

For Eachを使って図形を選択する方法は、コードも比較的、簡単です。

条件を指定して、図形を選択することもできるので、応用も利きます。

次でやってみます。

VBAで条件を指定して図形を選択する

「For Each」を使って、条件を指定して、図形を選択してみます。

テキストに「2」が含まれる図形を選択

図形がオートシェイプの場合で、かつ、テキストに「2」が含まれる場合に、図形を選択する、というのをやってみます。

VBAコードは、こんな感じになります。

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」が含まれる図形だけが選択される

テキストに「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

手順としては、

  • 選択したセル範囲をオブジェクトに格納
  • 図形を全てループ
  • 図形のセル範囲をオブジェクトに格納
  • 「選択したセル範囲」と「図形のセル範囲」に、共有するセル範囲があるかを判定
  • 共有するセル範囲がある場合に、図形を選択
  • 次の図形に進む

という感じです。

複数の図形を用意しました。

セルを選択しておきます。

セルを選択する

複数の図形を用意してセルを選択しておく

では、実行してみます。

選択したセル範囲の図形だけを選択

選択したセル範囲にある図形を選択

選択したセル範囲にある図形を、選択することができました。

こんな感じで、「For Each」で図形をループすると、いろいろと応用が利きます。

おわりに 

この記事では、図形を選択する方法について、ご紹介しました。

図形を選択するには、「Select」を使います。

複数の図形を選択するには、Selectの引数に「Replace:=False」を入力すると、できます。

全ての図形を選択したり、条件を付けて図形を選択する際には、「For Each」を使うと応用が利くので、便利です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す