用VBA根据单元格值动态改变图片让您无可匹敌

【用VBA根据单元格值动态改变图片让您无可匹敌】在Excel中通过改变单元格的值来更换图片 , 通常需要把图片插入到工作簿中 , 再用公式来更换 。 该方法在图片较多时有些不便 , 这时可用VBA代码来进行图片更换 , 而无需插入这些图片 。 步骤如下:
1.将所有图片放在一个文件夹中 , 在下面的示例代码中 , 图片所在文件夹名称为“图片文件夹” , 并将该文件夹与工作簿放置在一起 。

用VBA根据单元格值动态改变图片让您无可匹敌

文章插图

2.在工作表中插入一个图片 , 设置其位置和大小 , 然后选择该图片 , 在Excel界面右上角的名称框中输入一个名称后按回车键 。 在下面的示例代码中 , 将图片名称设置为“图片 1” 。
用VBA根据单元格值动态改变图片让您无可匹敌

文章插图

3.在工作表中选择某个单元格 , 如下面的示例代码中的“J4”单元格 。 用设置数据有效性的方法制作一个下拉列表 , 这样就可以通过下拉列表选择来某个图片名称 。
用VBA根据单元格值动态改变图片让您无可匹敌

文章插图

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

    推荐阅读