Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » Shapes.SelectAll後にグループ化するには

Shapes.SelectAll後にグループ化するには

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2109 ビルド14430.20306 Microsoft Store)

「shapes.selectall グループ化」
といった検索キーワードでアクセスがありました。

Shapesコレクションに用意されているSelectAllメソッドで全図形を選択した後、

Excel.Shapes.SelectAll

グループ化を行うには、どのようなコードを書けばいいのかを探していらしたのでしょう。

ActiveSheet.Shapes.SelectAll.Group

といったコードを試してみたものの、
「実行時エラー'424': オブジェクトが必要です。」
エラーが発生したのではないかと、私は想像しています。

[スポンサードリンク]

検索キーワード「shapes.selectall 結合」も、同じことを探していたように感じられます。

Shapes.SelectAllには戻り値がない

まず、

ActiveSheet.Shapes.SelectAll.Group

が実行時エラーになる理由を明確にしましょう。

これは、ShapesコレクションのSelectAllが戻り値のないメソッドだからです。

Excel.Shapes.SelectAll

上図のとおり、オブジェクトブラウザー詳細ペイン1行目に「Sub SelectAll」と表示されていることから、戻り値のないメソッドであることがわかります。

SelectAll後にグループ化するサンプル

で、以下のようなSubプロシージャにすれば、SelectAll後にグループ化できます。

Sub SelectAll後にグループ化する()
 ActiveSheet.Shapes.SelectAll
 If TypeName(Selection) = "DrawingObjects" Then
  Selection.Group
 End If
End Sub

Excel VBAのSelectionプロパティは、図形等が選択されている場合にはレガシーなDrawingObjects系のオブジェクトを返します。

グループ化したいということは複数の図形が選択されているはずで、その場合はDrawingObjectsオブジェクトが返されます。

Excel.DrawingObjects

そこで、VBAのTypeName関数でShapesプロパティの戻り値を確認して、DrawingObjectsだったときに、

If TypeName(Selection) = "DrawingObjects" Then

DrawingObjectsオブジェクトに用意されているGroupメソッドで、

Excel.DrawingObjects.Group

グループ化を行っています。

 Selection.Group

最終更新日時:2021-11-04 15:39

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » Shapes.SelectAll後にグループ化するには

「DrawingObjects」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.