宏,增加行号

时间:2015-11-07 02:10:35

标签: excel vba excel-vba row increment

我正在使用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

有没有一种简单的方法可以做到这一点?

2 个答案:

答案 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