失敗しない為のループの回し方 − GoGoマクロ!のWebサイト

HOME > レベルアップ > 失敗しない為のループの回し方

失敗しない為のループの回し方


ループの回し方
ループ処理で一番危険なのが、いわゆる「無限ループ」に陥るということです。 終わりのないループ処理から抜け出せずに永遠と処理を繰り返すことになります。
以下は、そのQ&A例から詳しい対処法を述べます。


Q.

エクセルの最下行に到達すれば(あるいは最終行が空欄であれば) ループを終了したいのですが、その方法がよくわかりません。
 
自分なりに何度も何度も試行錯誤し、ようやくブサイクながらも ループマクロを作ったのですが”エクセルの最下行に到達すれば ループを抜ける”のところでつまづいています。
 

 Do
   Selection.Copy
   Selection.End(xlDown).Select
   Range(Selection, Selection.End(xlUp)).Select
   ActiveSheet.Paste
   Application.CutCopyMode = False
   Selection.End(xlDown).Select
   選択範囲 = Selection.Address(ColumnAbsolute:=F・・・
   If 選択範囲 = Range("A65536") Then
     Exit Do
   End If
 Loop



A.

ちょっとこのプログラムは頂けませんね。 このプログラムのDo Loop文の使い方というものは、大変に危険性 が高いものといえますので、このような繰り返しの処理において 当講座ではこのようなループの回し方は一切教えていません。 これは、いわゆる無限ループに陥りやすく、特に初心者の方が使う べきものではないからです。

※このような Do 〜 Loop 文は大変に危険(特に作成段階で 暴走する可能性が大)ですので、初心者の方は絶対に使わないよう にしてください!!


で、このようなループの場合にも、当講座でいつも扱っている

 n = Cells(Rows.Count, "A").End(xlUp).Row  'A列の最下行

   と

 For i = 1 To n
   ・
   ・
   ・
 Next i


といったものを使えば、確実に必要な分の行だけのループを回すこと のできる(無限ループに陥ることの無い)プログラムとなりますから、 ループを回す場合には、必ずこうした安全性の高いプログラム作りと いうことを心がけるようにしてください。



NEXT >>
ループ処理の基本形
データのある最後の行までループさせる方法
For文とDo文の使い分けについて