录制宏表明以上是可能的。不过,需要进行一些调整。例如,以下宏通过评论为A1 创建一个图像弹出窗口。
Sub Test()
Dim Comm As Comment
On Error Resume Next
Range("A1").AddComment
Range("A1").Comment.Visible = False
Set Comm = Range("A1").Comment
Comm.Shape.Fill.UserTextured "C:\foo\bar.gif"
End Sub
On Error Resume Next 用于处理已经有 cmets 的范围,因此您可以继续重复运行宏。我将.Visible 设置为False 以确保图像不会成为永久弹出窗口(应该只出现在悬停时)。
我们可以进一步调整上面的内容来创建一个子例程,它接受一个范围和一个字符串作为参数,这样我们就可以跨范围重复调用它。
Sub CreatePopUp(TargetRange As Range, PathToImage As String)
Dim Comm As Comment
On Error Resume Next
With TargetRange
.AddComment
.Comment.Visible = False
Set Comm = .Comment
End With
Comm.Shape.Fill.UserTextured PathToImage
End Sub
上面可以这样调用:
Sub MassPopUp()
Dim rCell As Range
For Each rCell In [A1:A10]
CreatePopUp rCell, "Blah"
Next
End Sub
如果这有帮助,请告诉我们。
编辑:
如果您的日期在例如I1:I10,并且它们包含图像文件的确切 路径,那么上面的内容可以这样写:
Sub MassPopUp()
Dim rCell As Range
For Each rCell In [I1:I10]
CreatePopUp rCell, rCell.Value
Next
End Sub
rCell.Value 将获取单元格内的值,将其传递给插入图像的子程序,并将其作为注释应用到rCell,并提取正确的图像。这应该不会失败。只需确保单元格中的值是其各自文件的正确路径即可。