前回、VBAで選択しているオブジェクトと同じタイプを一括で選択する方法を記載しました。この方法は、
- 一括選択したいオブジェクトのタイプが一つのみで、複数タイプに対応していない
- オートシェイプの図形の詳細な分類に対応していない
という仕様だったので、上記課題に対応したVBAの備忘録。
事例の前提
VBAで選択しているオブジェクトと同じタイプを一括で選択する方法ですが、修正前の詳細な前提、背景は以下のとおりです。
VBAサンプル
Sub 複数選択して同じタイプの図形選択() 'AutoShapeTypeで判定' Dim 図形 As Shape Dim 選択した全ての図形タイプ As Collection Dim 選択した図形 As ShapeRange Dim シェイプタイプ As Variant Set 選択した図形 = Selection.ShapeRange Set 選択した全ての図形タイプ = New Collection ' 選択している全てのオブジェクトのタイプを取得' On Error Resume Next For Each 図形 In 選択した図形 選択した全ての図形タイプ.Add 図形.AutoShapeType, CStr(図形.AutoShapeType) Next 図形 On Error GoTo 0 ' 同じタイプのオブジェクトを選択' For Each シェイプタイプ In 選択した全ての図形タイプ For Each 図形 In ActiveSheet.Shapes If 図形.AutoShapeType = シェイプタイプ Then 図形.Select Replace:=False End If Next 図形 Next シェイプタイプ End Sub
事例の補足説明
同じタイプの判定は、次の「AutoShape オブジェクトの図形のタイプ」で判定しています。なお参考ですが、テキストボックスは、四角形と同じmsoShapeRectangle(1 四角形)の分類です。
以上、Excel VBAで、選択しているオートシェイプの図形と同じタイプを一括で選択する方法でした。