【问题标题】:Runtime error 1004 "Method of Range Class Failed"运行时错误 1004“范围类的方法失败”
【发布时间】:2014-06-19 18:48:01
【问题描述】:

我一直遇到错误(发生这种错误时没有规律或无法察觉的原因)。当我尝试执行 pastespecial(公式或值)时会发生错误。我很好奇是否有另一种方法可以在 VBA 中粘贴值或公式,因为数组中的行数是可变的(1 到 ~100)。我附上了下面代码的sn-p。

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

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

【问题讨论】:

  • 出现错误时length 的值是多少?您应该使用 & 在 VBA 中连接字符串。不推荐+。它在哪一行失败?
  • 当它失败时(不是每次都失败),它会在 pastespecial(值或公式)上失败。
  • 当它失败时,length 的价值是什么?
  • 它还在同一个工作表和工作簿中进行整个复制和粘贴。我会将 + 长度更改为 & 长度...不过我认为这不是错误的原因。
  • 粘贴区域必须与复制区域兼容。这意味着,如果您要从 B2 复制到 CM2,那就是一行。然后粘贴区域的列数和行数必须相同。

标签: excel vba paste


【解决方案1】:

试试这样的

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

【讨论】:

  • 我已经尝试过上面的公式(我之前没有使用过这样的代码......不完全理解它)。对于公式粘贴 - 我的应用程序似乎有问题,并且不确定如何在代码中修复它。 B2 中的公式引用 BL2...复制时,B3 中的公式引用 BL3、B4 但是引用 BL5、B5 是 BL7、B6 是 BL9。 B4 需要参考 BL4,B5 与 BL5,B6 与 BL6。有没有办法在代码中解决这个问题?
  • 这段代码非常快速和有用我必须说......有没有一种简单的方法来配置代码以将值从一张纸复制到另一张纸?示例将数据从 sheet1 复制到 sheet2?
  • 查看我的公式编辑:我的错 - 我没有完全测试我的原始方法。在工作表之间复制应该可以正常工作。
【解决方案2】:

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

  1. 激活工作表(从您复制的位置)。
  2. 从工作表中选择形状。
  3. 从工作表中复制形状。
  4. 粘贴到目标表的形状

示例:以前我的代码如下:

           Sheet1.Shapes(0).Copy
           Targetsheet.Paste

我已修改如下:

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

现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多