|    | 
     ▼こまったちゃん さん: 
こんにちは。 
 
>同一シート内に同一オートシェイプ名が複数有った場合、 
>シートの1ページ目から該当のオートシェイプ名(例えばAS1)を指定し、 
>名前を変更したいのですが、 
>なぜか、最後のページのオートシェイプ名が変わります。 
>直前に1ページ目のあるセルをセレクトしても駄目でした。 
> 
>なぜ同一シート内に同一オートシェイプ名が複数有るかというと、 
>ある1ページ1シートをある個数分コピーして帳票を出すという処理を 
>やりたいためです。 
>セル指定だと、うまくレイアウトできないため、オートシェイプを使用しています。 
 
上記の現象は、新規ブック(Sheet1とSheet2 というシート名が存在する) 
の標準モジュールに以下のコード(main)を実行すると再現できます。 
 
'======================================================== 
Sub main() 
  Dim g0 As Long 
  Dim shp As Shape 
  With Worksheets("sheet1") 
    .Select 
    Set shp = txt(.Range("a1")) 
    shp.Name = "shp1" 
    End With 
  With Worksheets("sheet2") 
   .Select 
   For g0 = 1 To 3 
     Worksheets("sheet1").Rows("1:10").Copy 
     .Rows("1:1").Insert Shift:=xlDown 
     Next 
   .Shapes("shp1").Select '行の下の図形が選択される 
   End With 
End Sub 
'======================================================== 
Function txt(ByVal rng As Range) As Shape 
  With rng 
    Set txt = .Parent.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 
          .Left, .Top, .Width, .Height) 
    End With 
End Function 
 
 
そもそも同一シートに同じ名前の図形が存在することは 
バグだと思いますけどねえ!! 
 
コピー時に図形の名前を一意に決まるものに変えるというのはいかがですか? 
 
再度、新規ブック(Sheet1とSheet2 というシート名が存在する) 
の標準モジュールに 
 
'=================================================================== 
Sub main2() 
  Dim g0 As Long 
  Dim shp As Shape 
  With Worksheets("sheet1") 
    .Select 
    Set shp = txt(.Range("a1")) 
    shp.Name = "shp1" 
    End With 
  With Worksheets("sheet2") 
   .Select 
   For g0 = 1 To 3 
     Worksheets("sheet1").Rows("1:10").Copy 
     .Rows("1:1").Insert Shift:=xlDown 
     .Shapes("shp1").Name = "shp" & 3 - g0 + 1 
     Next 
   .Shapes("shp1").Select '行の上の図形が選択される 
   End With 
End Sub 
'================================================================= 
Function txt(ByVal rng As Range) As Shape 
  With rng 
    Set txt = .Parent.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 
          .Left, .Top, .Width, .Height) 
    End With 
End Function 
 
として、main2を実行してみてください。 
 
これで図形にユニークな名前が付けられました。 
 
検討してみてください。 
 | 
     
    
   |