Excel 365升级了新功能,支持两种不同的插入图片方式:
- 放置在单元格中(Place in cell),新功能,此操作插入的图片下文中简称为
单元格中的图片
。 - 放置在单元格上(Place over cell),悬浮图片,Excel以前版本一直支持的功能
两种方式在Excel中的展示效果如下图所示。
如果希望使用VBA操作单元格中的图片
,非常遗憾的是对象模型中并未提供相应的对象,并且该对象不隶属与Shapes
或者Pictures
对象集合。这就带来的一个棘手的问题,如何使用VBA代码判断一个单元格中是否包含单元格中的图片
。
示例代码如下:
Function HasPicInCell(rCell As Range) As Boolean
On Error Resume Next
rCell.UpdatePictureInCellAlternativeText ""
HasPicInCell = (Err.Number = 0)
On Error GoTo 0
End Function
【代码解析】
第2行代码设置忽略运行时错误,继续执行后续代码。
第3行代码更新单元格上的图片
对象的Alt Text
。
第5行代码设置函数返回值。
- 如果未产生运行时错误,即
Err.Number = 0
,则返回值为True
- 如果产生运行时错误,,则返回值为
False
第5行代码恢复错误处理机制。
使用如下代码核查A1单元格是否存在单元格中的图片
。
Sub Demo()
Dim c As Range
Set c = Range("A1")
Debug.Print IIf(HasPicInCell(c), "", "不") & "存在单元格中的图片"
End Sub