我所做的是创建一个宏,如果存在图像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':应用程序定义或对象定义的错误
答案 0 :(得分:0)
仅错误1004并不表示某些特定错误,但我猜想这种情况是由于Range(Pic.TopLeftCell, Pic.BottomRightCell)
而引起的。
尝试以下操作:Range(Pic.TopLeftCell.Address & ":" & Pic.BottomRightCell.Address)