• ベストアンサー

VBAについて教えてください。

VBAについて質問です。 シート1(元払)があり、そのシート内のオートシェイプを消す式が下記の式で 可能なのですが、別シートのオートシェイプも同時に消す場合はどのようにすれば良いか 教えてください。   Sheets("元払").Select Dim sh As Shape For Each sh In ActiveSheet.Shapes If sh.Type = msoAutoShape Then sh.Delete End If Next sh

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

>Sheets("元払").Select >Dim sh As Shape >For Each sh In ActiveSheet.Shapes こういうのは間違いの元です。 オブジェクトを省略せずに指定すべきです。 Dim シート As WorkSheet Set シート = ThisWorkbook.WorkSheets("hoge1") シェイプ削除 シート Set シート = ThisWorkbook.WorkSheets("hoge2") シェイプ削除 シート        … Sub シェイプ削除(シート As WorkSheet) Dim sh As Shape For Each sh In シート.Shapes     sh.Delete Next End Sub マクロと対象シートが別ブックの場合は下記の ようにブックを指定します。 Set シート = Workbooks("hoge.xls").WorkSheets("hoge1") ブックやシートを省略して、カレントオブジェクトを ターゲットにする方法がありますが、誤動作の元 なので避けるべきでしょう。

rewqfdsavcxz
質問者

お礼

早々にご回答いただき有難うございました。 思う通りに作業できるようになりました。 これからもっと勉強しなくてはいけないなぁと実感しました。

すると、全ての回答が全文表示されます。

関連するQ&A