[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ自動記録 最終行の削除』(masa)
A B C D
1 機関 料金 送料 合計
2 あ社 100 80 180
3 あ社 50 80 130
4 あ社計 310
5 い社 105 90 195
6 い社 70 0 70
7 い社 105 120 225
8 い社計 490
9 う社 50 80 130
10 う社計 130
.
.
.
176 総計 54,321
150〜200件のデータを「ソート」→「データ⇒集計」する処理を 自動記録で作成したマクロで実行しています。 ”総計”の行が 不要なのでコードを足して削除したいのですが、自動記録では
Range("A1").Select
Selection.End(xlDown).Select
Rows("176:176").Select
Selection.Delete Shift:=xlUp
End Sub
となりました。最終行が176行目ではない時にも使えるようにするには どのように書き換えればいいでしょうか。単純ですみません。
私のスキルでは、これがいい方法なのかは、分かりませんが、
Dim r As Integer
r = Range("A65536").End(xlUp).Row
Rows(r).Delete Shift:=xlUp
で出来ます。(ケン)
(ケン)さんありがとうございました。できました。 自動記録してコード見て…の繰り返しでマクロ勉強中なのですが 自分が操作できる範囲のことしかわからなくて。 (^^; 今は、VBE上で列幅の数字かえたり TrueとFalseを入れ替えたりして 遊んでるだけですがおもしろいですね、マクロ。 がんばります。 (masa)
これでもできますよ。
Range("A65536").End(xlUp).EntireRow.Delete Shift:=xlUp
(INA)
(INA)さんありがとうございました。私にもできました。
ふと疑問なのですけど、(ケン)さん(INA)さんお二人の方法 どちらも "A65536"を含むのは、エクセルの限界行(という言い方しますか?)から データの最終行までを削除する作業だと考えていいですか? それは、データの途中に空白セルがある場合を考慮したからなのでしょうか? 列Aには空白セルがない場合、こう変えるとおかしいのですか?
Range("A1").Select
Dim r As Integer
r = Selection.End(xlDown).Row
Rows(r).Delete Shift:=xlUp
または
Selection.End(xlDown).EntireRow.Delete Shift:=xlUp
試しつつ変更しつつエラーと格闘しながら。よくわかっていなくてすみません。 (masa)
考え方はあってますよ。\(^o^)
データが連続して入っているなら、A1から Ctrl + ↓ で問題ないです。
(Endプロパティは、ctrl + 矢印 のショートカットを自動記録したのと同じです)
Range("A1").End(xlDown).EntireRow.Delete Shift:=xlUp
(INA)
EntireRow勉強になりました。最初に
Range("A1").End(xlDown).Rows.Delete Shift:=xlUp
として出来なかったので・・・
有難うございます。(ケン)
私も勉強になりました。 ありがとうございます。
マクロの勉強って外国語習得の過程に似てますね。 ここは頼れる通訳の先生がたくさんいらして心強いです。 また困った時にはよろしくお願いいたします。 (masa)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.