macros,增加行号

我正在使用Excelmacros来剪切并粘贴一些数据,并将其添加到列表的末尾。 目前它正在覆盖最后一个条目。

'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

有没有一个简单的方法来做到这一点?

您不需要select一个单元格或单元格范围来复制或粘贴; 事实上,最好避免这种做法。

 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 

这将findT列中最后一个使用的单元格,然后使用Range.Offset属性将粘贴1行的目标向下移动0个列。

如果复制/粘贴的源区域或目标区域可能包含合并的单元格,则需要先将其取消合并。 在复制/粘贴区域边缘,合并的单元格可能是源或目标的一半和一半的位置,这一点尤为重要。

 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 

请参阅如何避免使用Excel中的selectVBAmacros来获取更多的方法来摆脱依靠select和activate来实现您的目标。

这是我现在有的,工作正常,谢谢你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个左右的分类