[[20180619004856]] 『図の特定について』(くまやん) ページの最後に飛ぶ

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

 

『図の特定について』(くまやん)

マクロを使って、シート上の四角形の図を削除することを記録しました。

Sub Macro1()
'
' Macro1 Macro
'

'

    ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
    Selection.Delete
End Sub

しかし、新たに2個目の図を作成した場合、下記のように変更しないと
削除できないことまでわかりました。

("Rounded Rectangle 1") → ("Rounded Rectangle 2")

例えば、既に、図が作成されている別のシートがあったとして、その既存
の図を指定する場合、Rounded Rectangle ?? になるのかどうやったらわか
るのでしょうか?

初心者です。なるべく易しく解説ねがいます。

< 使用 Excel:unknown、使用 OS:unknown >


 おはようございます ^^
ループで
全てのShapesの名前を調べ
その名前を使い制御するのも
一つの方法かもです。

 Option Explicit
Sub sample01()
    Dim i As Long
    For i = 1 To ActiveSheet.Shapes.Count
        MsgBox ActiveSheet.Shapes(i).Name
    Next
End Sub
(隠居じーさん) 2018/06/19(火) 08:01

その提案だけだとDeleteしたときにiがズレるので初心者には優しくないと思います。
また、きっとlike演算子を知らないでしょう。

Sub sample02()

    Dim Shp As Shape
    For Each Shp In ActiveSheet.Shapes
        If Shp.Name Like "Rounded Rectangle*" Then
            Shp.Delete
        End If
    Next
End Sub
(名無し) 2018/06/19(火) 08:40

 名無し さん フォローありがとうございます

 For i = 1 To ActiveSheet.Shapes.Count
    ↓
 For i = ActiveSheet.Shapes.Count To 1 Step -1
でしたね
m(_ _)m
(隠居じーさん) 2018/06/19(火) 09:49

隠居おじ―さん、名無しさん、有難うございます。
シ―ト上にある特定の図の名前を、マクロは使わないで、
直接的に判明させることは、エクセルでは難しいのでし
ょうか?
(くまやん) 2018/06/20(水) 06:32

シ―ト上にある特定の図の名前を、マクロは使わないで、 直接的に判明させることは、エクセルでは難しいのでしょうか?

図形の名前を知るには、図を選択すれば、
名前ボックスにその図の名前が表示されますが、
最初に自動で付けられた名前は、
名前ボックスでは日本語表示、
VBAで名前を取得すると英語表示になるようです。(2010以降?)
この辺の挙動はバージョンで違う可能性がありますので、
どのバージョンの話かとかは明示してください。
(こちらはとりあえずExcel2010です。)

VBAで名前で図形を指定したいときは、
日本語でも英語でも指定は出来るようです。

Sub Macro1()
'
' Macro1 Macro
'

'

    ActiveSheet.Shapes.Range(Array("正方形/長方形 1")).Select
End Sub

ただし、名前ボックスで名前を変更したり、
VBAで名前を変更した場合は、
変更した名前で確定されるので、
マクロで図形を挿入するなら、
挿入したついでに任意で名前を付けると、
管理がしやすいかなと思います。

また、名前が解らなくても、
挿入した順番で図形に番号が振られるので番号で指定することも出来ますし、
図形を重ねてないなら、図形の下にあるセルのアドレスなどをヒントに、
図形を特定することも可能ですので、
何のために名前が知りたいかを明示された方が、
より参考になるアドバイスや情報が貰えると思います。
(まっつわん) 2018/06/20(水) 08:11


コメント返信:

[ 一覧(最新更新順) ]


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