| 
    
     |  | Index の意味が分かってないですね・・。 それは「シート上に配置した順番」につく連番です。
 その順番どおりに処理するのでなく、任意の順でやりたい場合は、
 Index を配列に入れてループすれば良いのです。
 まず「どの図形が何番のIndexになっているか ?」を調べるため
 
 For i = 1 To 10
 Debug.Print Workbooks(book_name1).Sheets("設定シート") _
 .DrawingObjects(i).TopLeftCell.Address(0, 0) & " : " & i
 Next i
 
 というコードで、図形の位置から1〜10のIndexがどの図形についているか
 調べます。そして例えば 3, 2, 5, 6, 7, 1, 9, 4, 8, 10 という順番で
 処理したければ
 
 Dim IndAry As Variant
 Dim i As Integer
 
 IndAry = Array(3, 2, 5, 6, 7, 1, 9, 4, 8, 10)
 For i = 0 To 9
 Set cp = Workbooks(book_name1) _
 .Sheets("設定シート").DrawingObjects(i)
 
 省略
 
 Next i
 
 というように変更すれば、自由な順番で処理が出来るようになります。
 とにかく、Nameプロパティでの指定は止めること。そうすることによって
 うまくいったなら、わざわざ元のやり方に拘って悩む必要はないはずです。
 
 
 |  |