【问题标题】:Excel vba Run-time error 1004 copying imagesExcel vba 运行时错误 1004 复制图像
【发布时间】:2013-01-10 12:06:16
【问题描述】:

我有几个宏可以在某些单元格值更改时复制和粘贴图像。

单步执行代码工作正常,但通过寻址单元格运行有时会出现以下错误:

运行时错误“1004”:

Worksheet 类的粘贴方法失败。

我使用以下代码复制图片:

    With Sheets("Quote")
    .Shapes("ExampleQuoteImage").Copy
    .Activate
    .Paste Destination:=Range("A102")
End With

该错误不会在我的开发机器上发生,但在某些用户机器上会发生。

它不会每次都在同一行中断,但会在复制图像的任何点中断。如果从中断点运行宏,其余部分将正常运行。

可能是并发错误还是与剪贴板有关?

【问题讨论】:

  • 复制完成后工作表是否未激活?我会把你的.Activate 移上一行来检查。
  • 相关工作表是在模块的前面选择的,因此在复制完成时应该已经处于活动状态。

标签: excel vba


【解决方案1】:

试试这个

With ThisWorkbook.Sheets("Quote")
    .Shapes("ExampleQuoteImage").Copy
    DoEvents
    .Paste Destination:=.Range("A102") 
End With

【讨论】:

  • 调试器在粘贴行停止,因此将 DoEvents 放在它之后不会做任何事情。我不认为代码有问题,因为它在我的电脑和许多其他电脑上都可以正常工作。为什么它不适用于某些计算机?
  • 这不是唯一的......我已经删除了.Activate,而不是添加了.Range("A102")
  • 你能解释一下为什么这会阻止运行时错误的发生吗?
  • 您是否尝试在复制后添加doevents
【解决方案2】:

由于剪贴板错误而发生错误。 解决方案是清除图像剪贴板。 我通过添加以下代码来做到这一点:

            With [a1]
                .Select
                .Copy [a1]
                Application.CutCopyMode = False
            End With

此代码只是将 a1 复制到 a1 并确保关闭复制模式。它会导致剪贴板被清除。 不过请与 DoEvents 结合使用

【讨论】:

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