- 締切済み
エクセル 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 など構文が理解できません。 どなたかお知恵をお貸し下さい。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- rivoisu
- ベストアンサー率36% (97/264)
>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