- ベストアンサー
オートシェイプの名前の取得
エクセル2000を使用してます オートシェイプをクリックしたときはわかるのですが・・・ Sub オートシェイプ14_Click() Dim objShape As Shape Dim ShapeName As String Set objShape = ActiveSheet.Shapes(Application.Caller) ShapeName = objShape.Name End Sub 新規でオートシェイプ作成されたとき、その名前を取得するにはどうしたらいいのでしょう。 作成された順番にセルに表示したいのです
- みんなの回答 (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列に、新規のシェイプ名 以上。
その他の回答 (1)
- onlyrom
- ベストアンサー率59% (228/384)
>作成された順番にセルに表示したいのです であれば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 '--------------------------------------------- 以上。
お礼
早速の回答有難うございます 既に作成済のシェイプでは出来ました! >新規でオートシェイプ作成されたとき は可能でしょうか
お礼
おぉ~~!! 出来ました!助かりました!\(^o^)/ 有難うございます!!