VBA|図形・オートシェイプ(Shape)を複数選択する方法

エクセルVBA VBAで画像・図・グラフの操作



エクセルで図形やオートシェイプを扱っていますか?

VBAで複数の図形・オートシェイプを選択するにはどのようにすればよいのでしょうか?

今回は、VBAで複数の図形・オートシェイプをする方法を徹底的に説明していきます。



図形・オートシェイプ(Shape)を複数選択する方法

図形の複数選択

名前で複数選択するには、、、

図形を複数選択するためには、「どの図形を選択するのか」を指定しなくてはなりません。

そのために、「図形の名前」を指定します。

図形の名前の確認方法

図形の名前の確認方法は2通りあります。

  1. エクセルの名前ボックスで確認する
  2. MsgBox Selection.Nameで確認する

エクセルの名前ボックスで確認する

エクセル表上で指定したい図形を1つだけ選択すると、表の左上にある「名前ボックス」に図形の名前が表示されます。

図形の名前を変更したい場合は、変更した名前を名前ボックスに直接入力し、Enterを押すことで図形の名前が変更されます。

左上の名前ボックスに図形の名前が表示される

ここで注意が必要なのは、名前ボックスに表示されている図形の名前は、初期状態(名前変更前)だと実際の図形の名前と異なる場合があるということです。

例えば、上図の「図形の名前」は「楕円1」と表示されていますが、初期状態(名前変更前)だと実際の「図形の名前」は「Oval 1」になっています。(※エクセルの仕様です。)

名前変更後は、名前ボックスに表示されている名前が「図形の名前」になります。

したがって、初期状態のまま図形の名前を確認したい場合は、以下のMsgBoxを使う方法を実施します。

MsgBox Selection.Nameで確認する

エクセル表上で指定したい図形を1つだけ選択した状態で以下のマクロを実行します。

Sub 名前確認()
    MsgBox Selection.Name
End Sub

実行結果:

図形の名前がメッセージボックスで表示される

メッセージボックスで図形の名前が表示されます。

左上の名前ボックスでは「楕円1」となっていますが、メッセージボックスで表示されている「Oval 1」が実際の図形の名前ですので、注意してください。

左上の名前ボックスで図形の名前を変更した後ですと、名前ボックスとメッセージボックスの表示は一致します。

以上の2通りの方法で複数選択したい図形の名前を確認します。

図形を複数選択するために「Shapeオブジェクト.Name Like “図形名*”」を使う

図形(Shape)を複数選択するためには、選択したい図形の名前を指定することを解説してきました。

今回は、下図のように複数の図形があるときに、赤円「楕円1」と緑円「楕円2」を選択する方法を解説していきます。

赤円と緑円を複数選択する方法

構文:Shapeオブジェクト.Name Like “図形名*”

今回は「楕円1」と「楕円2」を選択するので、「Like演算子」でワイルドカード(*)を使い「楕円*」というように指定します。

サンプルコードは以下のようになります。

Sub 複数選択()
    Dim myShp As Shape
    For Each myShp In ActiveSheet.Shapes
        If myShp.Name Like "楕円*" Then
            myShp.Select False
        End If
    Next
End Sub

上記コードの「myShp.Select False」の意味について解説します。

ShapeオブジェクトのSelectメソッドでは、Falseを指定した場合、Shapeオブジェクトを選択したまま選択範囲を拡張します。

したがって、Falseを指定することで、楕円1を選択したまま楕円2を選択することができるのです。

コメント

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