运行时错误1004“范围类失败的方法”

时间:2013-04-09 21:10:21

标签: excel vba paste

我一直遇到一个错误(没有出现任何模式或原因)。当我尝试执行pastespecial(公式或值)时发生错误。我很好奇是否有另一种方法在VBA中粘贴值或公式,因为数组中的行数是可变的(1到~100)。我附上了以下代码片段。

'长度和选择区都被定义为字符串

Range("P1").Select

'length是单元格中计算表格长度的公式

length = ActiveCell.Value
selectionarea = "B3:CM" + length
Range("B2:CM2").Select
Selection.Copy
Range(selectionarea).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
selectionarea = "C2:O" + length
Range(selectionarea).Select
Selection.Copy
Range("BL3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

2 个答案:

答案 0 :(得分:2)

尝试这样的事情

Dim rng As Range, Length

Length = Range("P1").Value

'EDIT use this for formulas
Range("B2:E" & Length).Formula = Range("B2:E2").Formula
'or this should also work
'Range("B2:E" & Length).FillDown

Set rng = Range("C2:O" & Length)
Range("BL3").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value

答案 1 :(得分:1)

错误:对象'_Worksheet'的方法'粘贴'失败 - 1004
解决方案:在将形状从一个工作表复制到另一个工作表之前,需要记住Excel中的问题。

  1. 激活工作表(从您复制的位置)。
  2. 从工作表中选择形状。
  3. 从工作表中复制形状。
  4. 粘贴到目标表单的形状
  5. 示例:以前我的代码如下所示:

               Sheet1.Shapes(0).Copy
               Targetsheet.Paste
    

    我修改了以下内容:

               Sheet1.Activite
               Sheet1.Shapes(0).Select
               Sheet1.Shapes(0).Copy
               Targetsheet.Paste
    

    现在工作正常。