我在同一工作簿中的两个工作表上都有图像。一个工作表名为“_SETUP”,另一个工作表名为“Layout1”。只要有图像,一切似乎都正常……但如果图像已被删除,它就会出错并抛出错误。错误出现在倒数第二行的最后一个“if”上:
应用程序定义或对象定义的错误‘1004’
对象不支持此属性或方法
我非常确定我需要添加逻辑来检查工作表上是否存在形状,然后再比较 TopLeftCell.Address(因为如果它为空,则没有这样的地址或单元格)。我不知道如何在抛出错误之前验证形状(在本例中为图像)是否存在。
我的代码在这里:
Private Sub killImages()
' first delete the primary image on the Layout1 sheet
Dim shBig As Shape
Set imgBigDeleteRange = Worksheets("Layout1").Range("A2")
For Each shBig In Worksheets("Layout1").Shapes
If shBig.TopLeftCell.Address = imgBigDeleteRange.Address Then shBig.Delete
Next
' then delete the thumbnail on the _SETUP sheet
Dim shThumb As Shape
Set imgThumbDeleteRange = Worksheets("_SETUP").Range("L33")
For Each shThumb In Worksheets("_SETUP").Shapes
If shThumb.TopLeftCell.Address = imgThumbDeleteRange.Address Then shThumb.Delete
Next
End Sub
我曾尝试改变为这样的方法,但似乎并不能 100% 解决问题:
If Worksheets("Layout1").Shapes.Count > 0 Then
For Each shBig In Worksheets("Layout1").Shapes
If shBig.TopLeftCell.Address = imgBigDeleteRange.Address Then shBig.Delete
Next
End If
任何帮助都将不胜感激。如果有办法简化从 2 个特定单元格中删除 2 个特定图像的过程,我同意……这只是我能想到的最接近的方法。