3

以下是我抛出此错误的代码:

Range 类的 PasteSpecial 方法失败

仅当我尝试调试时才抛出错误。

Range(Cells(7, 1), Cells((Rowrange + 7), 2)).Select
Selection.PasteSpecial Paste:=xlValues


  ' my complete code

strSheetName = "sheet1"
Sheets(strSheetName).Select
B6 = Range("B6").Value
B7 = Range("B7").Value
Range(Cells(11, 1), Cells((Rowrange + 11), 2)).Select
Selection.Copy

strSheetName = "sheet2"
Sheets(strSheetName).Select
' Range(Cells(7, 1), Cells((Rowrange + 7), 2)).Select
'.Range(Cells(7,1), .Cells(RowRange + 7, 2). PasteSpecial Paste := xlValues
'Selection.PasteSpecial Paste:=xlValues
With ActiveSheet
.Range(.Cells(7, 1), .Cells(Rowrange + 7, 2)).PasteSpecial Paste:=xlValues
End With

有没有办法避免这个错误?

4

2 回答 2

2

我相信(如果上面实际上是您的完整代码)您没有复制数据并直接尝试进行粘贴,因此您会收到该错误:)

这是你正在尝试的吗?

strSheetName = "Estimated vs Actual Costs"
With Sheets(strSheetName)
    .Range(.Cells(7, 1), .Cells(RowRange + 7, 2)).Copy
    .Range(.Cells(7, 1), .Cells(RowRange + 7, 2)).PasteSpecial Paste:=xlValues
End With

跟进

尝试这个

strSheetName = "sheet1"
With Sheets(strSheetName)
    B6 = .Range("B6").Value
    B7 = .Range("B7").Value
    .Range(.Cells(11, 1), .Cells((RowRange + 11), 2)).Copy
End With

strSheetName = "sheet2"
With Sheets(strSheetName)
    .Range(.Cells(7, 1), .Cells(RowRange + 7, 2)).PasteSpecial Paste:=xlValues
End With
于 2012-06-04T12:22:07.977 回答
1

避免这种错误的最好方法是只使用完全限定的范围:

With Sheets("The name of the sheet")
    .Range(.Cells(7, 1), .Cells(RowRange + 7, 2)).PasteSpecial Paste:=xlValues
End With

或者:With ActiveSheet如果您知道工作表已被选中。

另请注意,选择不是必需的。

于 2012-06-04T11:37:22.710 回答