| 
    
     |  | ▼岳 さん: >初期の目的達成しました。
 良かったですね^ ^
 
 Sub 練習4()が今ひとつやりたい事がわからなかったのですが
 
 Sub おまけ()
 '"Oval x"のxが連番になっている場合。
 Dim i As Long
 
 For i = 1 To 5
 With ActiveSheet.Shapes("Oval " & i)
 .Left = .TopLeftCell.Left + 10
 .Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
 End With
 Next i
 End Sub
 こんな事ですか?
 
 また、Ovalの名前連番をつけ直したい時などは
 Sub おまけ2()
 Dim i As Long
 
 For i = 1 To ActiveSheet.Ovals.Count
 ActiveSheet.Ovals(i).Name = "Oval " & i
 Next i
 End Sub
 ...などで。
 
 ついでにShape位置の微調整だけなら名前やIndexを取らなくてもできるので
 Sub おまけ3()
 Dim s As Oval
 
 For Each s In ActiveSheet.Ovals
 With s.TopLeftCell
 s.Left = .Left + 10
 s.Top = .Top + (.Height - s.Height) / 2
 End With
 Next s
 End Sub
 ...など。
 
 おまけ2と3で使った Oval は隠しオブジェクトです。
 (以前のバージョンとの互換性を保持するためにあるものだそうです)
 なので混乱するかもしれませんが、参考まで。
 (ヘルプで確認しておいてください)
 
 
 |  |