プロが教えるわが家の防犯対策術!

vbaエクセルマクロについて

sheet1のA列が空白の場合、行を削除(一番下の最終行まで)するプログラムを教えてください。

質問者からの補足コメント

  • 行は1048576行って決まっているんですか?
    知りませんでした!

      補足日時:2023/03/03 19:56
  • 最終行1048576を指定しないやり方もあるのでしょうか。。「一番下まで」という指示の仕方もありますか?

      補足日時:2023/03/03 19:59

A 回答 (3件)

No.2の続きで補足します。



最終行 = Worksheets("sheet1").Range("A1048576").End(xlUp).Row
で、データが入ってる最下の行が500ならば、最終行に500が入ります。

これを使って
Worksheets("sheet1").Range("A1:A" & 最終行).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

とやります。

No.1は、それを一遍にやってるだけです。
    • good
    • 0
この回答へのお礼

あなたに会えてよかった

なるほど!理解しました。
ご丁寧にありがとうございます_(._.)_
こちらを使ってやってみようと思います。
本当にたすかりました!
ご親切な説明に感謝いたします_(._.)_

お礼日時:2023/03/03 22:13

>>最終行1048576を指定しないやり方もあるのでしょうか。

。「一番下まで」という指示の仕方もありますか?

これは、そういう意味では無くて、下から上へ逆サーチして最初にヒットしたトコロを処理の最下行にしてるのです。
つまり、A列にデータがある最下の行を求めてるのです。

上から下へサーチすると、途中に歯抜けが有ったら、そこが処理の最下行になってしまって、その下が処理対象外になってしまいます。
    • good
    • 0

Worksheets("sheet1").Range("A1:A最終行").SpecialCells(xlCellTypeBlanks).EntireRow.Delete



A列の最終行は1,048,576なので、
最終行 = Worksheets("sheet1").Range("A1048576").End(xlUp).Row

纏めると


Worksheets("sheet1").Range("A1:A" & Worksheets("sheet1").Range("A1048576").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!