エクセルで図形やオートシェイプを扱っていますか?
VBAで複数の図形・オートシェイプを選択するにはどのようにすればよいのでしょうか?
今回は、VBAで複数の図形・オートシェイプをする方法を徹底的に説明していきます。
図形・オートシェイプ(Shape)を複数選択する方法
名前で複数選択するには、、、
図形を複数選択するためには、「どの図形を選択するのか」を指定しなくてはなりません。
そのために、「図形の名前」を指定します。
図形の名前の確認方法
図形の名前の確認方法は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を選択することができるのです。
コメント