我正在复制一个工作表(B14:I14
)的范围,并将值粘贴到第一个空行中的另一个工作表。如果范围在第一个单元格(B14
)中有数据,则此方法可以正常工作。
当某些单元格中有数据而不是B14时,下一次粘贴在上次执行宏的同一行时。
范围将与包含数据的所有单元格或仅两个单元格不同。我需要它来检查目标行是否为空,而不仅仅是第一个单元格。
这是我的宏:
Sub Save7()
Dim NextRow As Range
With Sheets("Sheet3")
Set NextRow = .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0)
End With
Sheet1.Range("B14:I14").Copy
NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
Application.CutCopyMode = False
Set NextRow = Nothing
End Sub
答案 0 :(得分:4)
我建议使用它:
Sub Save7()
Dim NextRow As Range
Set NextRow = Range("B" & Sheets("Sheet3").UsedRange.Rows.Count + 1)
Sheet1.Range("B14:I14").Copy
Sheet3.Activate
NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
Application.CutCopyMode = False
Set NextRow = Nothing
End Sub
这应该运作良好。 UsedRange检查所有列,因此如果B为空,则不会覆盖它。唯一的问题是,如果第一行是空白的,但你可以在那里添加标题数据,或者其他东西,它不会再被它打扰。当第一行为空时,UsedRange.Rows.Count仍然输出1. Enjoy!