• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA グループ化でエラーが出る時がある)

ExcelVBA グループ化でエラーが出る時がある

このQ&Aのポイント
  • ExcelVBAでオートシェイプを作成し、グループ化するマクロを作成しています。しかし、グループ化する際に「指定した名前のアイテムが見つかりませんでした」というエラーが発生します。
  • エラーが発生した場合、一度マクロを中止し、画面上に作成したオートシェイプを表示させてから再度マクロを実行すると、エラーが解消されることがあります。しかし、エクセルを一度閉じて再度開くと、またエラーが発生します。
  • グループ化の前に「ws_This.Shapes(str_Shape(1)).TopLeftCell.Select」を使用して画面の表示を変更しても、同様のエラーが発生します。さらに、新しいブックにコードをコピーして実行しても、エラーが発生します。再現性のある簡単なコードを作成してもエラーが再現しないため、問題の原因と解決方法が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.1

Shape.GroupItems プロパティ https://docs.microsoft.com/ja-jp/office/vba/api/Excel.Shape.GroupItems 上記の「例」を実行後、イミディエイトウィンドウで確認。 ? activesheet.shapes.count 1 ? activesheet.shapes(1).name Group 4 ? activesheet.shapes(1).groupitems.count 3 ? activesheet.shapes(1).groupitems(2).name shpTwo ? activesheet.shapes(1).groupitems("shpTwo").name shpTwo 以上、参考まで。

Mathmi
質問者

お礼

回答ありがとうございます。 「グループ化した個々のshapeはShape(n)では呼び出せず、Shape(n).GroupItem(m)という形で呼び出さなければならない」という事ですね。 フォルダ階層のような、ツリー状で管理されている、と。 (なお、名前からなら activesheet.shapes("shpTwo").name で、階層関係なく呼び出せました)

Mathmi
質問者

補足

オートシェイプ名を全て書き出して調べてみましたが、重複はありませんでした。 グループ化したオートシェイプ、str_Shape(12)/Group18も ws_This.Shapes.Range(str_Shape(12)).Nameでエラーは出ていません。 ただし、str_shape(2)~str_shape(8)でエラーが出ています。これらはグループ化していません。 既存のオートシェイプが問題かと思い、削除したり色々してみた所、グループ化を一段階解除したら、エラーが出なくなりました。 グループ化してあるオートシェイプはまだありますが、グループ化したものをグループ化はもうしていません。 解除したものをもう一度グループ化すると、再度エラーが出るようになったので、グループ化が問題なのかと思います。 それにしては、エラーが出る箇所がGroupではないのが不明ですが。

関連するQ&A