我有一个excel文件,其中包含1000+图片。图片嵌入在每一行的J列中。我有一个允许用户更新图片的用户表单。我想要的是要删除的图片出现在细胞之前更新一个新的图片。我找到并尝试使用的代码:
Dim curPic As Shape
For Each curPic In Worksheets("Sheet1").Shapes
If Not Application.Intersect(curPic.TopLeftCell, PicCell) Is Nothing Then
curPic.Delete
End If
Next curPic
问题是,因为我有1000多张照片,它检查每张照片,我得到一个"未响应";在文件上。是否有一种方法来搜索仅在一个特定的单元格,因为我知道单元格的位置。
假设:形状的左上角在特定的单元格内。
这个例程获取要检查的单元格,然后将每个形状的topLeftCell-Address与单元格的地址进行比较。如果它们匹配,shape将被删除。
与你的代码有什么不同:我比较的是范围的地址,而不是相交的范围。我想这会更快,但还没有测试过。
此外,一旦找到形状,就会退出for-next循环。这意味着例程对于列中的第一个单元格会更快,但是对于最后一个单元格会更慢。
Option Explicit
Sub deleteShapeInRange(rgCell As Range)
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.TopLeftCell.Address = rgCell.Address Then
shp.Delete
exit for
End If
Next
End Sub