質問: 0 then rows(i).delete end if next i end sub a16行まではウインドウ枠の固定で使用しています。 なのでa16行以降でこのマクロを実行したいです。 ご指導よろしくお願いいたします。
回答: (1)for next で範囲内行のセルを悉皆的に調べて、ifの行でセルの値や・状態を判断して、該当の行を削除するわけです。 (2)その行の全列削除するなら、rows(i).deleteより https://www.relief.jp/docs/excel-vba-difference-entirerow-row.html entirerowとrowの違い cells(i, 1).entirerow.delete などがよかろう。 (3)普通のfor nextの用途例では、1=は小さい(上の方)行から、大きい行に1つずつ処理する例が多いですが、行削除の場合は下から上に向かって処理をする場合が多い。なぜかわかりますか。ここが経験から来るポイントです。 >固定したい行まで削除されてしまいます の問題は、 行的に、i=1、からが対象になってしまうからです。1-16行目も対象になってしまう。17行からを対象にしたければ、下から上に上がってくる処理を、i=17で止めれなよい。 for i = cells(rows.count, "s").end(xlup).row to 2 step -1の2を17にすればよい。 質問文の、>a16行まで、>a16行以降の表現において、「含む・含まない」の点で、表現に厳密さがないのでは?よく考えて正しい方に決めてください。 == この質問が出るのでは、vbaをやるとして、先は長い,ように感じる。頑張るか やめるか、よく考えてみた方がよい。