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文の使い分けについて