2012-11-10 72 views
0

可能重复:
Calling on a Range in VBA在VBA设定范围

我想这个任务的代码。我注意到,当我没有将范围设置为名称时,代码有效,但是当我将数据块命名为“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 
+0

它是否在'Cells(1,“d”)上失败。我希望你写'Cells(1,4).Select'。我不认为这需要一个字符串 – Brad

+2

@Brad它确实需要一个字符串的列名称。 – GSerg

+0

@GSerg有趣......我想它确实如此。凉 – Brad

回答

2

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

粘贴时,您可以在工作表上的目标区域上呼叫PasteSpecial,而不是在“复制”范围内。

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 

还要注意的是Operation不接受xlPasteValues,你可能是指xlPasteSpecialOperationNone