粘贴在另一个工作表的下一行

时间:2016-02-22 17:14:58

标签: excel vba excel-vba

我是编程新手,并尝试使用宏录制器学习VBA的基础知识。我正在开发一个小型VBA项目,需要从C列,第2页和第H页,第1页复制数据,然后将它们作为单个列粘贴在Sheet 3,Col A上。第一部分很简单。我从Sheet 2上的Col C复制到Sheet 3上的Col A.第二部分是从Sheet 1上的Col. H复制,然后在Sheet 3上找到Col A上的下一个可用行。我的问题是如何获取我的宏将复制的数据粘贴到工作表3,Col A上的下一个可用行?我正在尝试调试,看起来问题是选择下一个空行。即使定义了NextRow,它看起来也不像Cells.NextRow.Select是正确的语法。这是我的代码:

Sub Macro2()

' copy from Sheet2

Sheets("Sheet2").Select

Range("C7").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

' paste on Sheet3

Sheets("Sheet3").Select

Range("A1").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

' copy from Sheet1

Sheets("Sheet1").Select

Range("H2").Select

Range(Selection, Selection.End(xlDown)).Select

Application.CutCopyMode = False

Selection.Copy

' paste on Sheet3

Sheets("Sheet3").Select

NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

**Cells.NextRow.Select**

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End Sub

FYI表1和2分别在第1行和第6行上有列标题。我不希望那些被复制,这就是为什么我硬编码要复制的范围的起点。我的变量" NextRow"我在调试时似乎正在工作,但似乎问题在于实际选择下一个可用行。

1 个答案:

答案 0 :(得分:1)

NextRow是一个不是Range()的数字。

Sheets("Sheet3").Range("A" & NextRow).Select

但是您应该清理代码并避免使用.Select。我正在编辑帮助。

Sub Macro2()

' copy from Sheet2
    With Sheets("Sheet2")
        .Range(.Range("C7"), .Range("C7").End(xlDown)).Copy
    End With

' paste on Sheet3
    Sheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

' copy from Sheet1
    With Sheets("Sheet1")
        .Range(.Range("H2"), .Range("H2").End(xlDown)).Copy
    End With

' paste on Sheet3
    With Sheets("Sheet3")
        NextRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Range("A" & NextRow)..PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With

End Sub