0

コピーしたデータの最後の行の後のすべての行を削除するコードを見つけようとしています

ワークシート A からワークシート B にデータをコピーしています。ワークシート B には既にデータが含まれています。ワークシート A の行数がワークシート B よりも少ない場合、ワークシート A からワークシート B にコピーされなかったすべての行を削除したいと考えています。

例: ワークシート A = 50 行 ワークシート B = 60 行。ワークシート A をワークシート B にコピーし、ワークシート A の一部ではない 10 行を削除したいと考えています。

これまでの私のコードは次のとおりです。

Dim shCurrentWeek As Worksheet
Dim shPriorWeek As Worksheet
Dim lr3 As Long

Set shCurrentWeek = ActiveWorkbook.Sheets("Current Week")
Set shPriorWeek = ActiveWorkbook.Sheets("Prior Week")
lr3 = shPriorWeek.Range(Rows.Count, "A").End(xlUp).Row

'Copies necessary rows in CurrentWeek tab to PriorWeek tab
shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A4:X" & lr3 + 1 & ":A" & Rows.Count).EntireRow.Delete

私のlr3が間違って設定されていると比較的確信しています...修正方法がわかりません。

ありがとう!

4

2 に答える 2

2

あなたのコードはそれを言っているのでshCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")(つまり、[starting row 4] から [starting row 2] にコピーしてlr3いる)、次のことを忘れて実行することができます(私は信じています):

shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A" & lr-2 & ":A10000").EntireRow.Delete

お役に立てれば

于 2012-11-27T15:48:13.670 に答える
1

lr3最後の行の行番号になりたい(貼り付けたデータと比較したオフセットではありません:

lr3 = shPriorWeek.Rows.Count

次に、delete ステートメントは次のようになります。

shPriorWeek.Range("A4:A" & lr3).EntireRow.Delete

または、最初に貼り付けをクリアしてから(コメントで提案されているように)、同様に良い方法であり、非常にきれいです。

于 2012-11-27T15:45:26.287 に答える