[[20191129123035]] 『VBA 最終行取得後、不要行削除』(naki) ページの最後に飛ぶ

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

 

『VBA 最終行取得後、不要行削除』(naki)

A列で値のはいっているセルの最終行を取得後、それより先の全ての行の削除を行いたいです。

A1セルの最終行取得からどのように組めばいいかわからない状態です。

Sub Macro1()

Range("A1").End(xlDown).Offset(1, 0).Select

End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 マクロの自動記録で行削除の作業を記録して、たたき台にしてみたらどうでしょう?

(渡辺ひかる) 2019/11/29(金) 12:49


その発想だと、
    Sub さんぷる1()
        Dim 最終行 As Long

        最終行 = Range("A1").End(xlDown).Offset(1, 0).Row
        Rows(最終行 & ":" & Rows.Count).Delete

    End Sub

みたいな感じでOKだとおもいますが、個人的には歯抜け等に対応出来るように下から上に見ていく方が好きなのでこちらをおすすめします。

    Sub さんぷる2()
        Dim 最終行 As Long

        最終行 = Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row
        Rows(最終行 & ":" & Rows.Count).Delete

    End Sub

(もこな2) 2019/11/29(金) 12:52


>渡辺ひかる さん

マクロの記録、検索、エクセルの学校を用いて思考錯誤しておりますが、変数の使い方や範囲指定が難しいですね・・・

発想は何となく浮かぶのですが、中々うまくいかないです・・・

>もこな2さん

ありがとうございます

確かに改行含むデータベースなどでは下から検索した方が応用がききそうです

頂いたコード実行してみたのですが、Deleteメソッドが失敗するようです。

引数を書いてみてもダメでした
(naki) 2019/11/29(金) 14:45


 こんな感じでいいのでは? 

 Sub test()

    With Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        .Resize(Rows.Count - (.Row - 1)).EntireRow.Delete
    End With

 End Sub

(渡辺ひかる) 2019/11/29(金) 16:40


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.