分享

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

 拨丝留其产 2016-04-10

在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单元格中选择不同的图片名称后,工作表中的图片会自动调用图片文件夹中图片进行更换。


来自:Excel技巧天地

链接:http://www./Article/excelvba/201212/965.html



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多