「shapes.selectall グループ化」
といった検索キーワードでアクセスがありました。
Shapesコレクションに用意されているSelectAllメソッドで全図形を選択した後、
グループ化を行うには、どのようなコードを書けばいいのかを探していらしたのでしょう。
ActiveSheet.Shapes.SelectAll.Group
といったコードを試してみたものの、
「実行時エラー'424': オブジェクトが必要です。」
エラーが発生したのではないかと、私は想像しています。
検索キーワード「shapes.selectall 結合」も、同じことを探していたように感じられます。
Shapes.SelectAllには戻り値がない
まず、
ActiveSheet.Shapes.SelectAll.Group
が実行時エラーになる理由を明確にしましょう。
これは、ShapesコレクションのSelectAllが戻り値のないメソッドだからです。
上図のとおり、オブジェクトブラウザー詳細ペイン1行目に「Sub SelectAll」と表示されていることから、戻り値のないメソッドであることがわかります。
SelectAll後にグループ化するサンプル
で、以下のようなSubプロシージャにすれば、SelectAll後にグループ化できます。
ActiveSheet.Shapes.SelectAll
If TypeName(Selection) = "DrawingObjects" Then
Selection.Group
End If
End Sub
Excel VBAのSelectionプロパティは、図形等が選択されている場合にはレガシーなDrawingObjects系のオブジェクトを返します。
グループ化したいということは複数の図形が選択されているはずで、その場合はDrawingObjectsオブジェクトが返されます。
そこで、VBAのTypeName関数でShapesプロパティの戻り値を確認して、DrawingObjectsだったときに、
If TypeName(Selection) = "DrawingObjects" Then
DrawingObjectsオブジェクトに用意されているGroupメソッドで、
グループ化を行っています。
Selection.Group
最終更新日時:2021-11-04 15:39
Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » Shapes.SelectAll後にグループ化するには