我正在使用Excel宏剪切和粘贴一些数据并将其添加到列表的末尾。 目前它正在覆盖最后一个条目。
'macro
Range("A3:R93").Select
Selection.Copy
Range("T100000").Select
Selection.End(xlUp).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
这将带我到T列的最后一个现有条目。
我希望在此之后粘贴我的新数据,因此需要将当前行增加1
有没有一种简单的方法可以做到这一点?
答案 0 :(得分:2)
您无需选择单元格或单元格区域即可进行复制或粘贴;事实上,最好避免这种做法。
Range("A3:R93").Copy _
Destination:=Range("T" & Rows.Count).End(xlUp).Offset(1, 0)
仅限值:
With Range("A3:R93")
Range("T" & Rows.Count).End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value
End With
这将找到T列中最后一个使用过的单元格,然后使用Range.Offset property将粘贴1行的目标向下移动0行。
如果复制/粘贴的源或目标区域可能包含合并的单元格,则需要先.UnMerge它们。这在复制/粘贴区域的边缘尤其重要,其中合并的单元格可能是源或目标的一半和一半。
Dim rng As Range
Set rng = Range("A3:R93")
rng.UnMerge
With Range("T" & Rows.Count).End(xlUp).Offset(1, 0).Resize(rng.Rows.Count, rng.Columns.Count)
.UnMerge
rng.Copy Destination:=.Cells
End With
有关远离依赖选择和激活以实现目标的更多方法,请参阅How to avoid using Select in Excel VBA macros。
答案 1 :(得分:0)
这就是我现在拥有的,工作正常,谢谢Jeeped
Sub Report5()
'
' Create Report
'
'
Range("DA3:DC10000").Clear
If Range("aw4") Then
With Range("BB3:BD9")
Range("DA" & Rows.Count).End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value
End With
End If
If Range("aw5") Then
With Range("BB10:BD23")
Range("DA" & Rows.Count).End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value
End With
End If
等另外50个左右的catagories