[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.