-PR-
解決済み

Excel2000 マクロで行を削除したいのですが

  • すぐに回答を!
  • 質問No.93871
  • 閲覧数159
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 44% (55/123)

みなさん、こんにちは。今、社員の給与データをもとに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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル8

ベストアンサー率 38% (19/49)

こんにちはpaku_iです。

列Aにはブランクの行が無いと仮定しますと
Range("A1").Select の下の行に
Selection.End(xlDown).Select を追加します。
すると一番下の CELL がアクティブになりますのでActiveCell.Row がここで言う 6226 になります。

ということで
最終行 = ActiveCell.Row
For 行=最終行 TO 2 Step -1
で良いのではないでしょうか。
お礼コメント
ariga

お礼率 44% (55/123)

いや~。とっても助かりました。説明も良くわかりましたし、実際にやってみたらとってもうまく動きました。ありがとうございました。
投稿日時 - 2001-06-22 17:47:31
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.2
レベル12

ベストアンサー率 33% (196/589)

具体的なシートのイメージが無いので、想像で書きます。

案1.データ件数は分かりませんか、その件数から計算出来ないでしょうか。

案2.最後の行を見分ける為の目印はありますか?
   最後まで、同じ2行の組み合わせが続くのでしたら、
   スペース行が始まる場所を調べればいいかもしれません。

  • 回答No.3
レベル14

ベストアンサー率 33% (1403/4213)

うろ覚えですが、

CurrentRegion.Rows.Countで行数を取得できませんでしたっけ?

これを変数に放り込んだらよろしいかと存じます。
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ