|
>つぎのように訂正したのですが、With文でエラーになります。
>With文を理解していません。
Debug.Print Workbooks("〜").Worksheets("〜").Cells(1, 1).Value
Debug.Print Workbooks("〜").Worksheets("〜").Cells(2, 1).Value
Debug.Print Workbooks("〜").Worksheets("〜").Cells(3, 1).Value
これを、With Statementを使用して書き直すと
こういう感じになります。
With Workbooks("〜").Worksheets("〜")
Debug.Print .Cells(1, 1).Value
Debug.Print .Cells(2, 1).Value
Debug.Print .Cells(3, 1).Value
End With
>>SelectやActive〜のような選択するだけの処理は
>>誤動作の原因となるので、使わない方が良いでしょう。
Selection等を使用した場合、その名のとおり、
現在選択されているものを対象に処理されますよね。
この現在選択されているというのが曲者で、Bookを開いたりとかすると
選択されているBookが変更されたりします。
ということはすなわち、そこまで把握してCodeを読まないといけないので
それだけわかりにくいということになります。
明示できるような箇所でしたら、明示してやったほうがいいでしょう。
(処理も速くなりますし・・・)
>>あとシートを削除すると、行削除と同様に
>>シートの順番(インデックス番号)がズレますので
>>for〜Next で Step -1 で逆からループしないと正しく動作しません。
>For Eachを、For Nextに書き換えるのでしょうか?
>上記のFor Nextでは、意味ないように思いますが…。
Index番号を意識してください。
ある行を削除すると次の行の行番号はどうなりますか?
Indexが存在するCollection ObjectをFor Each 〜 Next Loopで
まわすとえらいことになります。行はIndex指定できます。
FSOの Files Collection Object のような場合、
Index指定が存在しないので、そういった現象は発生しません。
|
|