[[20040325112220]] 『マクロ自動記録 最終行の削除』(masa) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ自動記録 最終行の削除』(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.