要从字面上修正你的例子,你会使用这个:
Sub Normalize()
Dim Ticker As Range
Sheets("Sheet1").Activate
Set Ticker = Range(Cells(2, 1), Cells(65, 1))
Ticker.Copy
Sheets("Sheet2").Select
Cells(1, 1).PasteSpecial xlPasteAll
End Sub
稍微改进一下就是去掉 Select 和 Activates:
Sub Normalize()
With Sheets("Sheet1")
.Range(.Cells(2, 1), .Cells(65, 1)).Copy Sheets("Sheet2").Cells(1, 1)
End With
End Sub
但使用剪贴板需要时间和资源,因此最好的方法是避免复制和粘贴,只需将值设置为您想要的值。
Sub Normalize()
Dim CopyFrom As Range
Set CopyFrom = Sheets("Sheet1").Range("A2", [A65])
Sheets("Sheet2").Range("A1").Resize(CopyFrom.Rows.Count).Value = CopyFrom.Value
End Sub
要定义CopyFrom,您可以使用任何您想定义的范围,您可以使用Range("A2:A65")、Range("A2",[A65])、Range("A2", "A65"),所有这些都是有效的条目。另外如果 A2:A65 Will never change 代码可以进一步简化为:
Sub Normalize()
Sheets("Sheet2").Range("A1:A65").Value = Sheets("Sheet1").Range("A2:A66").Value
End Sub
我添加了 Copy from range 和 Resize 属性以使其更加动态,以防您将来想使用其他范围。