[[20181021113508]] 『指定する形のAutoShapeのみ削除する』(yuri) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定する形のAutoShapeのみ削除する』(yuri)

 sheetの表には多数のAutoShapeが貼ってあって、その形も様々です。
そこで多数の形のshapeの中からしてするshapeのみを一括で削除したいのですがVBAには詳しくなく、検索して見つけたコードを応用して試しましたが上手く行きませんでした。

これが見つけたコードです。

Sub obuject_delete()
  Dim i As Long
    With Worksheets("Sheet1")
      For i = .Shapes.Count To 1 Step -1
        If .Shapes(i).Type = msoAutoshape Then .Shapes(i).Delete
      Next i
    End With
End Sub

これだと、全部消えるので、例えばmsoShapeRoundedRectangleの形のみ削除されるようにしたいのです。
どうか、ご教授ください。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


>例えばmsoShapeRoundedRectangleの形のみ削除されるようにしたい

AutoShapeTypeで判定してはどうでしょうか

(マナ) 2018/10/21(日) 12:07



マナさま

ご教授有難うございます。

AutoShapeTypeで判定してはどうでしょうか

ですが、判定のコードの組方がよくわかりません。

Sub obuject_delete()

    Dim i As Long
        With Worksheets("Sheet 1")
            For i = .Shapes.Count To 1 Step -1
                If .Shapes(i).Type = AutoShapeType = msoShapeRoundedRectangles Then .Shapes(i).Delete

            Next i
        End With
 End Sub

上記のようにしたら、全部削除になります。
すみません、もう少し詳しくお願いします。

(yuri) 2018/10/21(日) 15:49


 If .Shapes(i).AutoShapeType = 5 Then
     MsgBox .Shapes(i).Name
 End If
とかで
ご確認を

(隠居じーさん) 2018/10/21(日) 16:22


 マナさんは、ご提示のコードはTypeプロパティでShapesかどうかを判定しているので、
 AutoShapeTypeプロパティで角丸四角形かどうかを判定した方が良いですよと言ってます。

 Typeプロパティが何を意味するのか、回答者に元コードの改造を丸投げするだけで無く、
 まずはコードの意味を理解する努力もして下さい。

(sy) 2018/10/21(日) 19:03


 ShapesのTypeプロパティは、オートシェイプを含む様々な図形オブジェクトの種類を返します。
 なのでTypeプロパティでは、対象の図形オブジェクトがオートシェイプか違うかしか分かりません。
 以下を参考にして下さい。
https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.office.core.msoshapetype?redirectedfrom=MSDN&view=office-pia

 対してAutoShapeTypeプロパティはオートシェイプの種類を返します。
 対象の図形がオートシェイプだった場合に、そのオートシェイプの種類を返します。
https://msdn.microsoft.com/ja-jp/VBA/Office-Shared-VBA/articles/msoautoshapetype-enumeration-office
 此処とか分かりやすいリストにしてくれてます。
https://www.relief.jp/docs/018476.html

 ヒントを元にもう一度ご自身で頑張ってみて下さい。
 まぁそれでも分からなければ仕方ないので、分からないと言えば回答を出します。
 日中は仕事なので回答できませんが、その時は誰かが回答してくれるでしょう。

(sy) 2018/10/21(日) 19:22


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.