• 締切済み

エクセル VBA Loop & Delete

最近マクロの勉強を始めたばかりの初心者で、どうしても Loop 処理の構文が理解出来ません。 S列 T列 U列  0  0  0 10  5  8  0  4  0  ・  ・  ・  ・  ・  ・ 上記のようにS列(3行目)からU列(最終行変動)に0~20000位の値が入っていて、データの並び替えでS列(昇順)で並べ替えをした後、S列の値が0の場合のみS~T列をDelete Shift:=xlUP したいです。 もしくはS列が0の場合のみT列まで選択 Range("S3:U...") とし、S列が0の行をまとめて Delete Shift:=xlUp したいです。 並べ替えまでマクロすぐ出来たのですが、Loop For Next など構文が理解できません。 どなたかお知恵をお貸し下さい。

みんなの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

>S列が0の行をまとめて Delete Shift:=xlUp したいです。 この場合ソート済みならS列に0の行が固まってあるのでまとめて削除できます 最初(3行目)は0ではじまり0じゃなくなるところの行番号を見つければいいわけです。 loopを使わずに見つける方法もありますがLoopの構文でということなので この場合条件が成立するまでLoopします。 For Nextは 通常Loop回数が分かっているときに使用します。 条件でLoopの制御をする場合はWhile Wend Do Until Loop などの構文を使います。(For Each Nextは解説が面倒なので自分で勉強してください。) それぞれについては書籍などを参考にしてください。 While Wendで説明します。 Dim i i = 3 While Cells(i,1) =0 i = i + 1 Wend iには上から順に見ていって0じゃなくなったセルの行番号が入りますので削除するのは3からi-1までになります。 range(cells(3,19),cells(i-1,21)).Delete Shift:=xlUp または range("S3:" & "U" & i-1).Delete Shift:=xlUp

関連するQ&A