[[20230314154849]] 『VBA 空白行を削除する際に最終行まで削除される』(あかり) ページの最後に飛ぶ

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

 

『VBA 空白行を削除する際に最終行まで削除される』(あかり)

VBAに関する質問です!

複数シートから1枚のシートに集計するマクロを組みましたが、空白行を削除して行を詰めるところが上手くいきません。
空白行と一緒に最終行まで削除されてしまいます。
デバックでコピペするところまで実行すると、最終行がきちんとコピペされているのが分かるので、問題はDelete部分なんだとは思うのですが・・・。

ご教授いただけますと幸いです。

Sub copypaste()
Application.ScreenUpdating = False
'変数の宣言

    Dim LstRow1 As Long
    Dim LstRow2 As Long
    Dim W_s

    For Each W_s In Worksheets

        If W_s.Name <> "仕訳貼付" And W_s.Name <> "経費精算 (見本)" And W_s.Name <> "領収書紛失時" Then

'最終行の取得

        LstRow1 = W_s.Cells(Rows.Count, 1).End(xlUp).Row
        LstRow2 = Worksheets("仕訳貼付").Cells(Rows.Count, 1).End(xlUp).Row
'タイトル行を除き、コピー、貼り付け
     W_s.Range("J5:W" & LstRow1).Copy
     Worksheets("仕訳貼付").Range("A" & LstRow2).Offset(0, 0).PasteSpecial xlPasteValues
'空白行を削除するマクロ
  Dim lRow As Long
  Dim i As Long
    lRow = Worksheets("仕訳貼付").Cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    For i = lRow To 2 Step -1
        If Worksheets("仕訳貼付").Cells(i, 1).Value = "" Then
            Worksheets("仕訳貼付").Range(i & ":" & i).Delete
        End If
    Next i

    End If

    Next

 Application.ScreenUpdating = True

End Sub

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


いろいろな方法があると思いますが、オートフィルタで空白行を抽出して削除する方法です。

 Sub test()
     Dim ws As Worksheet
     Set ws = Worksheets("仕訳貼付")
     ws.Range("A1").AutoFilter 1, ""
     With ws.Range("A1").CurrentRegion.Offset(1, 0)
         .Resize(.Rows.Count - 1).EntireRow.Delete
     End With
     ws.Range("A1").AutoFilter
 End Sub
(フォーキー) 2023/03/14(火) 16:23:17

同じような質問があって、そちらでも回答しましたが、複数のシートを1枚に集計するならパワークエリをおすすめします。
シート内容の集計も、空白行の削除も簡単にできるので。
(フォーキー) 2023/03/14(火) 16:28:23

ありがとうございます!パワークエリは知らなかったのですが、すごく便利そうです。試してみることにします。
(あかり) 2023/03/14(火) 16:33:29

 LstRow2の位置に貼り付けているので、最終行を上書きしているのが問題なのでは

     LstRow2 = Worksheets("仕訳貼付").Cells(Rows.Count, 1).End(xlUp).Row
     Worksheets("仕訳貼付").Range("A" & LstRow2).Offset(0, 0).PasteSpecial xlPasteValues
(´・ω・`) 2023/03/14(火) 17:12:29

(´・ω・`)様
ご返信ありがとうございます! まさしくですね(>_<)すごく初歩的なミスで恥ずかしいです。LstRowの一個下を指定したら上手くいきました。
ありがとうございました!
(あかり) 2023/03/14(火) 17:22:34

コメント返信:

[ 一覧(最新更新順) ]


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