質問: ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/60fa586ef8265e09c0103f6c86f875a5.png) ``` Sub test() Debug.Print ActiveSheet.Shapes.Count For Each btn In ActiveSheet.Shapes 'ActiveSheet.Shapes(13).Select Debug.Print btn.AlternativeText & " " & CStr(btn.TopLeftCell.Row) Next End Sub ``` 12個のshapes(テキストボックスx1、ボタンx8、図x3)があるシートで、▲釦を押下した際に正常に上に移動しないため、「Sub test()」にて確認したところ、shapeを13個認識している模様です。 **a)**シートの倍率を10%にしても、**b)**ctrl+endでも、最後の1個が選択できないため、削除できません。 「Sub test()」4行目に「ActiveSheet.Shapes(13).Select」としてみると、「実行時エラー '-2147467259(80004005)' 'Select'メソッドは失敗しました: 'Shapeオブジェクト'」となります。 ``` Sub sample() Sheets("当該シート名").DrawingObjects.Delete End Sub ``` で **c)**12個のshapes削除を試み、さらに念のため当該シートRow3のプルダウンリストも削除してみますと、12個のshapes削除は確認されますが、ActiveSheet.Shapes.Count → 1 が帰ってきます。 ▲釦の動作については、昨日はこのようなことはなかったので、コードを修正加筆する間に余計なものが紛れ込んだのか、、、それも確認しています。 邪魔している最後の1個を排除し▲釦を意図通りに動作させたいです。 いつもお世話になって入ります。コメントいただいた方々には感謝いたしております。ご教授いただけますと幸いです。
回答: VBAマクロを実装中に同じ事象で辿り着きました。 本件は「解決済」となっていましたが、参考になればとコメントしました。 Excelの入力規則で「リスト」としたセルがアクティブになるとドロップダウンが表示されますが、この際Excelが「Drop Down XXX」というオブジェクトを生成するようです(図1)。 セルが非アクティブになると、オブジェクトは非表示になります(図2)。 このオブジェクトはブックを開いた直後は存在せず、該当のセルがアクティブになった場合に初めて生成され、以降は違うセルの入力規則(リスト)でも同じオブジェクトを使いまわしているようです。 「Ctrl + S」でブックを保存すると、勝手に消えました(図3)。 BeforeSaveなどのイベントでShapes.Countとすると、オブジェクト数が「1」で取得されるため、想定したオブジェクト数と異なる判定を招くことがあると思います。 ※この入力規則(リスト)で生成されたオブジェクトは扱いが特殊なのか、UI経由で選択できないほか、マクロから削除しようとすると「メモリが不足しています」というエラーが発生しました。エラーの内容と理由ははっきりわかりませんが、このオブジェクトが起因しているようでした。 図1 !イメージ説明 図2 !イメージ説明 図3 !イメージ説明