您的位置: 首页 > EXCEL技巧 > ExcelVBA >

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

时间:2014-10-12 整理:docExcel.net

在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单元格中选择不同的图片名称后,工作表中的图片会自动调用图片文件夹中图片进行更换。示例文件下载:http://www.excel123.cn/Soft/vbaxg/201212/42.html

用数组公式获取一列中的第一个非空单元格值 问题:用数组公式获取一列中的第一个非空单元格值
回答:可以用多种方法获取一列或一行中的第一个非空单元格值,例如下面的几个数组公式: 获取一列中第一个非空单元格值,假设数据在A1:A10区域中: =INDEX(A1:A10,MATCH(TRUE,LEN(A1:A10)<>0,0),1) =INDEX(A1:A10,MATCH(,0/(A1:A10<> ),)) =INDEX...
用数组公式从一列中提取非空单元格值 问题:用数组公式从一列中提取非空单元格值
回答:...数组中的空值,最后用INDEX函数返回一列连续的非空单元格值。本例由于A2:A20区域
Excel从多列各取一个单元格值进行组合一例 问题:Excel从多列各取一个单元格值进行组合一例
回答:...工作中遇到一个问题,需要在Excel中从多列各取一个单元格值进行组合,得到全部的组合数据。如图所示,要得到“颜色”、“领型”和“尺码”的全部组合,放到以E2为左上角的区域中。经过一番摸索后总结了几种方法,分别...
在Excel工作表单元格中自动输入数据 问题:在Excel工作表单元格中自动输入数据
回答:...完成键入的项,可以封锁此选项。 如何打开或封锁单位格值的自动完乐成能 1、单击“Microsoft Office 按钮”,然后单击“Excel 选项”。 2、单击“高级”,然后在“编辑选项”下,排除或选中“为单位格值启用影象式键入”...
重点显示出Excel2013某数字范围的单元格 问题:重点显示出Excel2013某数字范围的单元格
回答:...选择第二种:只为包含以下内容的单元格设置格式,单元格值介于200到600之间。 ③下面进行单元格的设置,在填充选项卡中,选择一种颜色,确定。 ④这样就突出某数值区间的单元格,如果大家要突出大于指定值的单元格...
类似自定义筛选包含功能的数组公式 问题:类似自定义筛选包含功能的数组公式
回答:...后用SMALL和OFFSET函数按先后顺序返回包含指定文本的单元格值,对于不包含指定文本的单元格,公式会在D列的后面返回A65536这个几乎用不到的空单元格值。 例如要查找A列包含“12”的数据,在D1中输入“12”即可。 由于用到了S...
相关推荐: