我需要将复制的数据粘贴到下一个空单元格。 我已经完成了复制数据的代码。我在粘贴它时遇到了麻烦。以下是我的代码:
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
答案 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
来暂停复制模式。