- ベストアンサー
Excel2000 マクロで行を削除したいのですが
みなさん、こんにちは。今、社員の給与データをもとにExcel2000 で ある集計をとるマクロを組んでいて、下記のような「給与額が0円の データのみ削除する」マクロを組みました。 Sub データ削除() Sheets("Sheet1").Select Range("A1").Select Dim 行 As Long For 行 = 6226 To 2 Step -1 With Cells(行, 7) If .Value > 0 Then Exit For If .Value = 0 Then Rows(行).Delete End With Next End Sub このマクロで正しく動いているのですが、 For 行 = 6226 To 2 Step -1 の構文の 6226 が問題で、これは 6226行目から上に向かって行を削除してい きます。 対象データの量が毎回違うので、データ量がマクロに指定されている行数より 多いと正しく動かないと思いますし、少なければ効率が悪くなるのではと思い ます。 そこで、「データの一番下のセルから削除を始める」設定にしたいのですが、 どうしたらよいでしょうか? ちなみに、データは給与額をキーに降順に並んでいて下の行から削除していく ようになっています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちはpaku_iです。 列Aにはブランクの行が無いと仮定しますと Range("A1").Select の下の行に Selection.End(xlDown).Select を追加します。 すると一番下の CELL がアクティブになりますのでActiveCell.Row がここで言う 6226 になります。 ということで 最終行 = ActiveCell.Row For 行=最終行 TO 2 Step -1 で良いのではないでしょうか。
お礼
いや~。とっても助かりました。説明も良くわかりましたし、実際にやってみたらとってもうまく動きました。ありがとうございました。