- ベストアンサー
【Excel VBA】一定数以上の空白行を削除する
- Excel VBAを使用して、特定の条件に基づいて一定数以上の空白行を削除する方法について教えてください。お手数ですが、具体的な書き方のヒントだけでも教示していただければ幸いです。
- 見積用のVBAを作成している際に、20行以上の空白行が生成された場合、該当行を削除してシートを整える方法を知りたいです。具体的なVBAの書き方のヒントを教えてください。
- Excel VBAを使用して、一定数以上の空白行を削除する方法について教えてください。20行以上の空白行が発生した場合、該当行を削除してシートを整える方法を知りたいです。具体的なVBAの書き方のヒントをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>20行空白ができた場合に該当行を削除 ホントにそれでよいのなら,こんな具合でしょうか。 簡易版:「空白行」であるか否か,たとえば項目列のA列の記入の有無で判定できる sub macro1() dim h as range dim lastRow as long lastrow = range("A65536").end(xlup).row on error resume next for each h in range("A1:A" & lastrow).specialcells(xlcelltypeblanks).areas if h.rows.count >19 then h.entirerow.delete shift:=xlshiftup end if next end sub ついでに:「空白行」であるか否か,全列をくまなく調べたい sub macro2() dim h as range dim i as long for i = 1 to 8 range("A:H").autofilter field:=i, criteria1:="=" next i on error resume next for each h in activesheet.autofilter.range.specialcells(xlcelltypevisible).areas if h.rows.count > 19 then h.entirerow.delete shift:=xlshiftup end if next activesheet.autofiltermode = false end sub #余談 >20行空白ができた場合に該当行を削除 1ページ20行の設定で各ページの最終行に小計欄があるのに,20行の空白になるのですか? もちろん削除の判断基準だけのお話なので,修正や応用はたやすいとは思いますが。
お礼
早速のご回答、ありがとうございます! お陰様で目的を果たすことができました。 > 1ページ20行の設定で各ページの最終行に小計欄があるのに,20行の空白になるのですか? 説明がうまくなくて申し訳ないです。 小計欄は各ページにあるのではなく、各カテゴリの最後に挿入しているので、 例えば、25個の項目があるカテゴリであれば、 最初の1ページ目は、見出しが1行、次に項目が19行、 2ページ目に項目が6行、空白行が13行、小計が1行されます。 余談ですが、作成中の見積ファイルは、ボタンクリック時に 入力シートから印刷シートに入力した見積が転記される仕組みにしています。 その際、見出しフラグを設定した行間の小計を上のイメージで挿入したり、 印刷用の書式調整等をしたりしています。 ただ、小計行を挿入する処理が不完全で、項目数によって空白行が 20行発生してしまう場合があり、最初はそこを直そうとしたのですが、 出来上がった印刷シートから空白行を20行消す方が早そうだと思い、 今回の質問に至った次第でございます。 ともあれ、これで先に進めます。 ありがとうございます!