• ベストアンサー

オートシェイプの名前の取得

エクセル2000を使用してます オートシェイプをクリックしたときはわかるのですが・・・ Sub オートシェイプ14_Click() Dim objShape As Shape Dim ShapeName As String Set objShape = ActiveSheet.Shapes(Application.Caller) ShapeName = objShape.Name End Sub 新規でオートシェイプ作成されたとき、その名前を取得するにはどうしたらいいのでしょう。 作成された順番にセルに表示したいのです

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

>新規でオートシェイプ作成されたときは可能でしょうか 既に作成されているか、新たに作成されたかを判断するためには そのブックを開いたときに、既に作成されているShapeの数をとっておき、それと比較して多ければ、新規Shapeありということになりますね。 で、それを利用する方法。 '----------------------------------------------- ' ●標準モジュールへ貼り付け '---------------------------------------------  Public OldShapesCnt Sub test333()  Dim R As Integer  Dim N As Integer '既存のシェイプ(A列へ表示)  For N = 1 To OldShapesCnt   R = R + 1   Range("A1").Offset(R).Value = Sheets("Sheet1").Shapes(N).Name  Next N  R = 0 '新規のシェイプ(B列へ表示)  For N = OldShapesCnt + 1 To Sheets("Sheet1").Shapes.Count   R = R + 1   Range("B1").Offset(R).Value = Sheets("Sheet1").Shapes(N).Name  Next N End Sub '----------------------------------------------------- ●ここからは、ThisWorkbookモジュールへ貼り付け '----------------------------------------------- Private Sub Workbook_Open()   OldShapesCnt = Sheets("Sheet1").Shapes.Count End Sub '------------------------------------------------ (1)先ず、Sheet1 にシェイプをいつくか配置 (2)ブックを保存、終了 ここまではテストの前処理 (3)ブックを開く (4)Sheet1 にシェイプを追加 (5)マクロを実行 これで、ブックを開いたときからSheet1に新規作成されたシェイプ名が以下のように表示されます。 A列に、既存のシェイプ名 B列に、新規のシェイプ名 以上。

msaitou
質問者

お礼

おぉ~~!! 出来ました!助かりました!\(^o^)/ 有難うございます!!

その他の回答 (1)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

>作成された順番にセルに表示したいのです であればShpapesコレクションを順番に見ていけばいいです。 A列に名前を表示する場合 '-------------------------------------------- Sub test()   Dim R As Integer   Dim myShape As Shape   For Each myShape In ActiveSheet.Shapes     R = R + 1     Range("A1").Offset(R).Value = myShape.Name   Next myShape End Sub '--------------------------------------------- 以上。

msaitou
質問者

お礼

早速の回答有難うございます 既に作成済のシェイプでは出来ました! >新規でオートシェイプ作成されたとき は可能でしょうか

関連するQ&A