[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.