|
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プロパティでの指定は止めること。そうすることによって
うまくいったなら、わざわざ元のやり方に拘って悩む必要はないはずです。
|
|