• ベストアンサー

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行目から上に向かって行を削除してい きます。 対象データの量が毎回違うので、データ量がマクロに指定されている行数より 多いと正しく動かないと思いますし、少なければ効率が悪くなるのではと思い ます。 そこで、「データの一番下のセルから削除を始める」設定にしたいのですが、 どうしたらよいでしょうか? ちなみに、データは給与額をキーに降順に並んでいて下の行から削除していく ようになっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • paku_i
  • ベストアンサー率38% (19/49)
回答No.1

こんにちはpaku_iです。 列Aにはブランクの行が無いと仮定しますと Range("A1").Select の下の行に Selection.End(xlDown).Select を追加します。 すると一番下の CELL がアクティブになりますのでActiveCell.Row がここで言う 6226 になります。 ということで 最終行 = ActiveCell.Row For 行=最終行 TO 2 Step -1 で良いのではないでしょうか。

ariga
質問者

お礼

いや~。とっても助かりました。説明も良くわかりましたし、実際にやってみたらとってもうまく動きました。ありがとうございました。

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

うろ覚えですが、 CurrentRegion.Rows.Countで行数を取得できませんでしたっけ? これを変数に放り込んだらよろしいかと存じます。

  • gould09
  • ベストアンサー率33% (196/589)
回答No.2

具体的なシートのイメージが無いので、想像で書きます。 案1.データ件数は分かりませんか、その件数から計算出来ないでしょうか。 案2.最後の行を見分ける為の目印はありますか?    最後まで、同じ2行の組み合わせが続くのでしたら、    スペース行が始まる場所を調べればいいかもしれません。

関連するQ&A