Excel VBA中的设置范围

Excel VBA中的设置范围,excel,vba,Excel,Vba,可能重复: 我正在为此任务尝试此代码。我注意到,当我没有将范围设置为名称时,代码可以工作,但是当我将正在工作的数据块命名为“rng”时,代码会给我一个错误。我在这个代码中做错了什么?谢谢大家! Sub Macro2() Dim rng As Range Set rng = ActiveCell.CurrentRegion.Copy Cells(1, "d").Select rng.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteVa

可能重复:

我正在为此任务尝试此代码。我注意到,当我没有将范围设置为名称时,代码可以工作,但是当我将正在工作的数据块命名为“rng”时,代码会给我一个错误。我在这个代码中做错了什么?谢谢大家!

Sub Macro2()
Dim rng As Range

Set rng = ActiveCell.CurrentRegion.Copy
Cells(1, "d").Select

rng.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteValues
Application.CutCopyMode = False


End Sub

Range.Copy
不返回复制的范围。它将范围复制到剪贴板并返回一个
布尔值

粘贴时,在工作表的目标区域调用
PasteSpecial
,而不是在“复制”范围内


还请注意,
操作
不接受
xlPasteValues
,您可能是指
xlPasteSpecialOperationNone

是否在
单元格(1,“d”)上失败。选择
?我希望您编写
单元格(1,4)。选择
。我不认为它需要像that@Brad它确实将列名作为字符串。@GSerg很有趣……我想是的。凉爽的
Dim source as Range, target as Range

Set source = ActiveCell.CurrentRegion
Set target = ActiveSheet.Cells(1, "d")

source.Copy
target.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone
Application.CutCopyMode = False