Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11859 / 13644 ツリー ←次へ | 前へ→

【13675】オートシェイプの削除 kurenai 04/5/11(火) 8:26 質問[未読]
【13676】Re:オートシェイプの削除 IROC 04/5/11(火) 8:37 回答[未読]
【13706】Re:オートシェイプの削除 ぴかる 04/5/11(火) 15:32 回答[未読]
【13725】Re:オートシェイプの削除 kurenai 04/5/12(水) 9:42 お礼[未読]

【13675】オートシェイプの削除
質問  kurenai  - 04/5/11(火) 8:26 -

引用なし
パスワード
   はじめまして。
分からないことがあるので、ご教授お願いします。

A1:E10内のものを全てクリアしたい。
マクロで範囲内選択でオートシェイプ削除と
文字等の削除ををマクロでやると・・・

  Range("A1:E10").Select
  Selection.ClearContents
  ActiveSheet.Shapes.Range(Array("Line 1", "Line 2")).Select
  Selection.Delete

みたいにLine1などと指定したものを削除になってしまいます。
コマンドボタンで実行させて削除を行ったとしても・・
範囲内には、この他にもオートシェイプは使用するので、
この削除の方法では、他のものが残ってしまいます。

範囲内のものを全て削除するには、どうしたらよいでしょうか?

【13676】Re:オートシェイプの削除
回答  IROC  - 04/5/11(火) 8:37 -

引用なし
パスワード
   オートシェイプの種類は何になりますか?


そのようなときは、
シート上の図形を対象に
for each でループ処理して、
そのなかで各々の図形が、どこの位置にあるか判別し、
それに応じて、
削除すればよいと思います。

以下は、参考です。


 For Each sh In ActiveSheet.Shapes
    Select Case sh.TopLeftCell.Column
    Case 4 To 9
      If sh.Connector Then sh.Delete
    End Select
  Next

【13706】Re:オートシェイプの削除
回答  ぴかる  - 04/5/11(火) 15:32 -

引用なし
パスワード
   こんにちは。

↓で選択したとこ、全部クリアします。お試し下さい。
以前に、りん大先生(最近ご無沙汰)に、教えてもらったものです。
ツールバーソフト、ピカつーるを紹介出来ないのが残念・・・。

Sub 全てクリア()
 
Dim Sh As Shape, r1 As Range, r2 As Range

  On Error GoTo errout
  If ActiveSheet.ProtectContents Then
  Else
   If TypeName(Selection) = "Range" Then
    Selection.Clear
    If TypeName(Selection) = "Range" Then
     If ActiveSheet.Shapes.Count > 0 Then
      For Each Sh In ActiveSheet.Shapes
       '図形が完全に範囲に含まれる場合は削除する
       '図形左上セルのチェック
       Set r1 = Application.Intersect(Selection, _
                      Sh.TopLeftCell)
       '図形右下セルのチェック
       Set r2 = Application.Intersect(Selection, _
                      Sh.BottomRightCell)
       If r1 Is Nothing Or r2 Is Nothing Then
       '左上セルまたは右下セルが選択範囲の外にある場合は無視
        '両方外にある場合も無視
       Else
        Sh.Delete
       End If
      Next
     End If
    End If
   Else
    Selection.Delete
   End If
  End If
  Set r1 = Nothing: Set r2 = Nothing

  Exit Sub
errout:

End Sub

【13725】Re:オートシェイプの削除
お礼  kurenai  - 04/5/12(水) 9:42 -

引用なし
パスワード
   IROCさん・ぴかるさんありがとうございます。

御二方の方法を試しに動かして見ました。
少々悩みましたが、無事出来ました。

本当にありがとうございました。

11859 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free