我是编程新手,并尝试使用宏录制器学习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"我在调试时似乎正在工作,但似乎问题在于实际选择下一个可用行。
答案 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