45it.com- 电脑学习从此开始!
diy硬件教程攒机经验装机配置
设计photoshop网页设计特效
系统注册表dos系统命令其它
存储主板显卡外设键鼠内存
维修显卡cpu内存打印机
winxpvistawin7unix/linux
cpu光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公excelwordpowerpointwps
编程数据库css脚本php
网络局域网qq服务器
软件网络系统图像安全

用vba根据单元格值动态改变图片

电脑软硬件应用网 45it.com 时间:2017-09-22 16:27 作者:佚名
在excel中通过改变单元格的值来更换图片,通常需要把图片插入到工作簿中,再用公式来更换。该方法在图片较多时有些不便,这时可用vba代码来进行图片更换,而无需插入这些图片。步骤如下: 1.将所有图片放在一个文件

在excel中通过改变单元格的值来更换图片,通常需要把图片插入到工作簿中,再用公式来更换。该方法在图片较多时有些不便,这时可用vba代码来进行图片更换,而无需插入这些图片。步骤如下:

1.将所有图片放在一个文件夹中,在下面的示例代码中,图片所在文件夹名称为“图片文件夹”,并将该文件夹与工作簿放置在一起。

将图片文件夹与工作簿放置在一起

2.在工作表中插入一个图片,设置其位置和大小,然后选择该图片,在excel界面右上角的名称框中输入一个名称后按回车键。在下面的示例代码中,将图片名称设置为“图片 1”。

设置图片名称

3.在工作表中选择某个单元格,如下面的示例代码中的“j4”单元格。用设置数据有效性的方法制作一个下拉列表,这样就可以通过下拉列表选择来某个图片名称。

设置下拉列表来选择图片名称

4.按alt+f11,打开vba编辑器,在代码窗口中粘贴下面的代码。

private sub worksheet_change(byval target as range)
if target.address = "$j$4" then
dim pic as object, picpathandname as string, picfolder as string
dim pict as integer, picl as integer, pich as integer, picw as integer

'图片文件夹名称
picfolder = "图片文件夹"
'所选图片路径
picpathandname = thisworkbook.path & "\" & picfolder & "\" & range("j4") & ".jpg"

set pic = activesheet.shapes("图片 1")
'原图片的位置和大小
with pic
   pict = .top
   picl = .left
   pich = .height
   picw = .width
end with
'删除原图片
pic.delete

'插入所选图片
set pic = activesheet.shapes.addpicture(filename:=picpathandname, linktofile:=msofalse, _
     savewithdocument:=msotrue, left:=picl, top:=pict, width:=picw, height:=pich)
'设置图片名称
pic.name = "图片 1"
end if

set pic = nothing
end sub

这样,当在j4单元格中选择不同的图片名称后,工作表中的图片会自动调用图片文件夹中图片进行更换。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识