创建宏以删除形状时发生运行时错误'1004'

时间:2019-06-18 11:43:00

标签: excel vba excel-2013

我所做的是创建一个宏,如果存在图像Range("D199:U205",该宏将删除特定范围的单元格中的所有图像,然后在工作表底部复制一个名为“ JB Sig”的图像,然后粘贴到工作表中现在空白的位置。

使用宏时,出现“运行时错误'1004':应用程序定义的错误或对象定义的错误”。发生此错误并进行调试时,引起问题的行是If Not Intersect(Range("D199:U205"), Range(Pic.TopLeftCell, Pic.BottomRightCell)) Is Nothing Then Pic.Delete

我已经在网上给出的示例中以多种方式重写了该代码,但是错误仍然导致我遇到问题。奇怪的是,有时我会收到错误,而其他时候却没有,甚至在VBA代码中进行了最小的外观更改可以修复它(临时)。因此,目前该宏在我的计算机上运行正常。但是,正在访问同一文件(在不同办公室中)的同事仍然遇到运行时错误。

我对代码非常缺乏经验,我编写的任何VBA通常都是从某个地方复制和粘贴的,这与我了解自己的工作相反。所以请耐心等待我的愚蠢。谢谢

我尝试通过摆脱必须查看的密码来解除对VBAProject的保护。这没用。我已经尝试过将在线删除图片的代码更改为各种不同的建议,但是有时我仍然遇到相同的错误。使代码运行的方法似乎有很多,但它们都容易受到运行时错误的影响。

Sub Approval_JB()
'
' Approval_JB Macro
'

'
    Dim ws As Worksheet
    Set ws = Sheets("Issue Letters")
    ws.Unprotect Password:="john123"
    Dim Pic As Object
    For Each Pic In ws.Shapes
    Dim R As Range
    Debug.Print Pic.Name
    Debug.Print Pic.TopLeftCell.Address
    Debug.Print Pic.BottomRightCell.Address
    Set R = Range(Pic.TopLeftCell, Pic.BottomRightCell)
    If Not Intersect(Range("D199:U205"), R) Is Nothing Then Pic.Delete
    Next Pic
    Range("D199:U205").ClearContents
    ws.Shapes.Range(Array("JB Sig")).Select
    Selection.Copy
    ws.Range("D201").Select
    With ws.Range("D199")
    .Value = "Yours Faithfully"
    End With
    With ws.Range("D204")
    .Value = "Joe Bloggs"
    End With
    With ws.Range("D205")
    .Value = "Engineer"
    End With
    Range("B192").Select
    ws.Protect Password:="john123"
End Sub

如上所述,有时它可以工作。但是其他时候我运行宏时,会出现此错误。

  

运行时错误'1004':应用程序定义或对象定义的错误

1 个答案:

答案 0 :(得分:0)

仅错误1004并不表示某些特定错误,但我猜想这种情况是由于Range(Pic.TopLeftCell, Pic.BottomRightCell)而引起的。

尝试以下操作:Range(Pic.TopLeftCell.Address & ":" & Pic.BottomRightCell.Address)