当鼠标滑过单元格时,Excel就会自动显示相关图片……
当鼠标滑过单元格时,Excel就会自动显示相关图片……
AhaExcel
建议常用Excel的职场人关注,海量教程随学随用,随用随查。 主创:看见星光,微软全球最有价值专家、Excel图书作者、培训师。 内容:每日四文,一篇函数教程、一篇VBA教程、一个短视频小技巧、一篇杂文。
以下文章来源于VBA编程学习与实践 ,作者EH看见星光
ExcelHome技术论坛下属VBA版块公众号,Excel易用宝+VBA代码宝激活码免费发放,日常分享Excel VBA编程学习与实践中的点点滴滴。
哈喽,我是星光。今天给大家分享一段 复制即可使用 的VBA小代码;作用是 将指定文件夹内的图片,根据名称,批量插入到Excel工作表的批注中 。
这么做有什么好处呢?当鼠标滑过单元格时,Excel就会自动显示图片了,很实用,看起来也很酷~
实际效果如下图所示▼
、
▲如何运行VBA代码?其实很简单
Sub AddCommentPic()
Dim arr, i&, k&, n&, b As Boolean
Dim strPicName$, strPicPath$, strFdPath$
Dim rngData As Range, rngEach As Range
’On Error Resume Next
’
用户选择图片所在的文件夹
With Application.FileDialog(msoFileDialogFolderPicker)
If
.Show Then strFdPath = .SelectedItems(
1
)
Else
:
Exit
Sub
End
With
If
Right(strFdPath,
1
) <>
""
Then strFdPath = strFdPath &
""
Set rngData = Application.InputBox(
"请选择需要插入图片到批注中的单元格区域"
, Type:=
8
)
’用户选择需要插入图片到批注中的单元格或区域
If rngData.Count = 0 Then Exit Sub
Set rngData = Intersect(rngData.Parent.UsedRange, rngData)
’
intersect语句避免用户选择整列单元格,造成无谓运算的情况
If
rngData Is Nothing Then MsgBox
"选择单元格不能全为空。"
:
Exit
Sub
arr = Array(
".jpg"
,
".jpeg"
,
".bmp"
,
".png"
,
".gif"
)
’用数组变量记录五种文件格式
Application.ScreenUpdating = False
For Each rngEach In rngData
’
遍历选择区域的每一个单元格
If
Not rngEach.Comment Is Nothing Then rngEach.Comment.Delete
’删除旧的批注
strPicName = rngEach.Text ’
图片名称
If
Len(strPicName) Then
’如果单元格存在值
strPicPath = strFdPath & strPicName ’
图片路径
b = False
’pd变量标记是否找到相关图片
For i = 0 To UBound(arr)
’
由于不确定用户的图片格式,因此遍历图片格式
If
Len(Dir(strPicPath & arr(i))) Then
’如果存在相关文件
rngEach.AddComment ’
增加批注
With rngEach.Comment
.Visible = True
’批注可见
.Text Text:=""
.Shape.Select True ’
选中批注图形
Selection.ShapeRange.Fill.UserPicture strPicPath & arr(i)
’插入图片到批注中
.Shape.Height = 150 ’
图形的高度,可以根据需要自己调整
.Shape.Width =
150
’图形的宽度,可以根据需要自己调整
.Visible = False ’
取消显示
End
With
b = True
’标记找到结果
n = n + 1 ’
累加找到结果的个数
Exit
For
’找到结果后就可以退出文件格式循环
End If
Next
If b = False Then k = k + 1 ’
如果没找到图片累加个数
End
If
Next
MsgBox
"共处理成功"
& n &
"个图片,另有"
& k &
"个非空单元格未找到对应的图片。"
Application.ScreenUpdating = True
End
Sub
小贴士▼
3) 代码中使用了intersect语句交叉选取已使用的单元格区域。
Set
rngData =
Intersect
(rngData.Parent.UsedRange, rngData)
用户可以选择整列(比如整个A列)或多列单元格区域运行代码,而不用担心因为运算量过大,造成程序假死的情况。
4) 代码导入的图片格式支持五种常见的类型
".jpg"
,
".jpeg"
,
".bmp"
,
".png"
,
".gif"
.Shape.Height = 150
’图形的高度,可以根据需要自己调整
.Shape.Width = 150 ’
图形的宽度,可以根据需要自己调整
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03