如何将复制的数据粘贴到下一个空单元格

时间:2015-04-19 14:05:46

标签: excel vba excel-vba excel-formula excel-2010

我需要将复制的数据粘贴到下一个空单元格。 我已经完成了复制数据的代码。我在粘贴它时遇到了麻烦。以下是我的代码:

Dim eRow As Long
 Workbooks("Daily Task Tracker - March 2015.xlsx").Activate
 Worksheets("Tasks").Activate
 Sheets("Tasks").Select
 eRow = WorksheetFunction.CountA(Range("A:A")) + 1
 Cells(eRow, "A:G").PasteSpecial xlPasteValuesAndNumberFormats

有人可以帮我找到我的语法错误吗?

OP的评论代码:

'Copy Data
Sheets("Daily Tasks Tracker").Select
Range("D8").Select
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy

1 个答案:

答案 0 :(得分:1)

对于所有意图和目的,如果要粘贴从一系列单元格复制的数据块,则只需指定左上角的单元格。

Dim eRow As Long
with Sheets("Tasks")
    eRow = WorksheetFunction.CountA(.Range("A:A")) + 1
    .Cells(eRow, "A").PasteSpecial xlPasteValuesAndNumberFormats
end with

在没有Select的情况下替代:

通常最好从下往上查找最后一个使用过的单元格,然后将一个单元格向下推进到第一个未使用的单元格。从上到下看或用值计数单元格可能会遇到一个空白单元格,这会产生错误的结果。

Dim w As Long, h As Long
With Sheets("Daily Tasks Tracker")
    'D9 is Range("D8").Offset(1, 0).Select
    w = .Range(.Range("D9"), .Range("D9").End(xlToRight)).Cells.Count
    h = .Range(.Range("D9"), .Range("D9").End(xlDown)).Cells.Count
    .Range("D9").Resize(h, w).Copy _
      Destination:=Sheets("Tasks").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End With

如果您粘贴xlPasteValuesAndNumberFormats,则几乎只是执行标准复制和粘贴。这更容易编码,您不必添加Application.CutCopyMode = False来暂停复制模式。