GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

【Q&A】最下行までのループのさせ方とは?

2009-10-20 08:40:54 | マクロ作成のコツ

【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

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



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。